(Re-)introduce $uidsign and $gidsign.
Jarkko Hietaniemi [Sat, 18 Mar 2000 21:40:55 +0000 (21:40 +0000)]
p4raw-id: //depot/cfgperl@5808

13 files changed:
Configure
Porting/config.sh
Porting/config_H
config_h.SH
epoc/config.sh
pp_sys.c
vms/subconfigure.com
vos/config.def
vos/config.h
vos/config_h.SH_orig
win32/config_H.bc
win32/config_H.gc
win32/config_H.vc

index f722d38..33d0566 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Sat Mar 18 19:51:46 EET 2000 [metaconfig 3.0 PL70]
+# Generated on Sat Mar 18 23:12:11 EET 2000 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.com)
 
 cat >/tmp/c1$$ <<EOF
index 5547a22..a0a4bba 100644 (file)
@@ -8,7 +8,7 @@
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Sat Mar 18 19:02:52 EET 2000
+# Configuration time: Sat Mar 18 23:13:32 EET 2000
 # Configured by     : jhi
 # Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
 
@@ -59,7 +59,7 @@ ccflags='-pthread -std -DLANGUAGE_C'
 ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_BSD=1 SYSTYPE_BSD=1 unix=1'
 cf_by='jhi'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Sat Mar 18 19:02:52 EET 2000'
+cf_time='Sat Mar 18 23:13:32 EET 2000'
 charsize='1'
 chgrp=''
 chmod=''
index 2aea050..75f860b 100644 (file)
@@ -17,7 +17,7 @@
 /*
  * Package name      : perl5
  * Source directory  : .
- * Configuration time: Sat Mar 18 19:02:52 EET 2000
+ * Configuration time: Sat Mar 18 23:13:32 EET 2000
  * Configured by     : jhi
  * Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
  */
  */
 #define        Gid_t_f         "u"             /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     1               /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t gid_t            /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
  *     getgroups() or setgropus()..
  */
 #define        Uid_t_f         "u"             /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     1               /* UID sign */
+
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */
index 6cb591e..52f4cb8 100644 (file)
@@ -2218,6 +2218,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define        Gid_t_f         $gidformat              /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     $gidsign                /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
@@ -2227,16 +2233,16 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t $gidtype         /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
  *     getgroups() or setgropus()..
@@ -2878,6 +2884,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define        Uid_t_f         $uidformat              /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     $uidsign                /* UID sign */
+
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */
index 8b9f982..a60b7a0 100644 (file)
@@ -770,7 +770,9 @@ i_sysstatfs='undef'
 i_sysvfs='undef'
 i_ustat='undef'
 uidsize='2'
+uidsign='1'
 gidsize='2'
+gidsign='1'
 ivdformat='"ld"'
 uvuformat='"lu"'
 uvoformat='"lo"'
index 517a955..5bbe250 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -2546,12 +2546,20 @@ PP(pp_stat)
 #if Uid_t_size > IVSIZE
        PUSHs(sv_2mortal(newSVnv(PL_statcache.st_uid)));
 #else
+#   if Uid_t_sign <= 0
        PUSHs(sv_2mortal(newSViv(PL_statcache.st_uid)));
+#   else
+       PUSHs(sv_2mortal(newSVuv(PL_statcache.st_uid)));
+#   endif
 #endif
 #if Gid_t_size > IVSIZE 
        PUSHs(sv_2mortal(newSVnv(PL_statcache.st_gid)));
 #else
+#   if Gid_t_sign <= 0
        PUSHs(sv_2mortal(newSViv(PL_statcache.st_gid)));
+#   else
+       PUSHs(sv_2mortal(newSVuv(PL_statcache.st_gid)));
+#   endif
 #endif
 #ifdef USE_STAT_RDEV
        PUSHs(sv_2mortal(newSViv(PL_statcache.st_rdev)));
@@ -4801,7 +4809,11 @@ PP(pp_gpwent)
        PUSHs(sv = sv_newmortal());
        if (pwent) {
            if (which == OP_GPWNAM)
+#if Uid_t_sign <= 0
                sv_setiv(sv, (IV)pwent->pw_uid);
+#else
+               sv_setuv(sv, (UV)pwent->pw_uid);
+#endif
            else
                sv_setpv(sv, pwent->pw_name);
        }
@@ -4825,11 +4837,18 @@ PP(pp_gpwent)
 #endif
 
        PUSHs(sv = sv_mortalcopy(&PL_sv_no));
+#if Uid_t_sign <= 0
        sv_setiv(sv, (IV)pwent->pw_uid);
+#else
+       sv_setuv(sv, (UV)pwent->pw_uid);
+#endif
 
        PUSHs(sv = sv_mortalcopy(&PL_sv_no));
+#if Uid_t_sign <= 0
        sv_setiv(sv, (IV)pwent->pw_gid);
-
+#else
+       sv_setuv(sv, (UV)pwent->pw_gid);
+#endif
        /* pw_change, pw_quota, and pw_age are mutually exclusive. */
        PUSHs(sv = sv_mortalcopy(&PL_sv_no));
 #ifdef PWCHANGE
index 8650b0f..56de278 100644 (file)
@@ -74,10 +74,12 @@ $ perl_shmattype = ""
 $ perl_mmaptype = ""
 $ perl_gidformat = "lu"
 $ perl_gidsize = "4"
+$ perl_gidsign = "1"
 $ perl_groupstype = "Gid_t"
 $ perl_stdio_stream_array = ""
 $ perl_uidformat = "lu"
 $ perl_uidsize = "4"
+$ perl_uidsign = "1"
 $ perl_d_getcwd = "undef"
 $ perl_d_nv_preserves_uv = "define"
 $ perl_d_fs_data_s = "undef"
@@ -4013,9 +4015,11 @@ $ WC "pager='" + perl_pager + "'"
 $ WC "uidtype='" + perl_uidtype + "'"
 $ WC "uidformat='" + perl_uidformat + "'"
 $ WC "uidsize='" + perl_uidsize + "'"
+$ WC "uidsign='" + perl_uidsign + "'"
 $ WC "gidtype='" + perl_gidtype + "'"
 $ WC "gidformat='" + perl_gidformat + "'"
 $ WC "gidsize='" + perl_gidsize + "'"
+$ WC "gidsign='" + perl_gidsign + "'"
 $ WC "usethreads='" + perl_usethreads + "'"
 $ WC "d_pthread_yield='" + perl_d_pthread_yield + "'"
 $ WC "d_pthreads_created_joinable='" + perl_d_pthreads_created_joinable + "'"
index 10d44a2..1352c05 100644 (file)
@@ -286,6 +286,7 @@ $full_csh=''
 $full_sed='/system/ported/command_library/sed.pm'
 $gidformat='"d"'
 $gidsize='4'
+$gidsign='-1'
 $gidtype='gid_t'
 $groupstype='gid_t'
 $i16size='2'
@@ -439,6 +440,7 @@ $u8size='1'
 $u8type='unsigned char'
 $uidformat='"d"'
 $uidsize='4'
+$uidsign='-1'
 $uidtype='uid_t'
 $uquadtype='_error_'
 $use5005threads='undef'
index d325815..d77218a 100644 (file)
  */
 #define        Gid_t_f         "d"             /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     -1              /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t gid_t            /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
- *     getgroups() or setgropus()..
+ *     getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */
  */
 #define        Uid_t_f         "d"             /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     -1              /* UID sign */
+
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */
index c0c5b8f..b743847 100755 (executable)
@@ -2217,6 +2217,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define        Gid_t_f         $gidformat              /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     $gidsign                /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
@@ -2226,19 +2232,19 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t $gidtype         /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
- *     getgroups() or setgropus()..
+ *     getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t $groupstype   /* Type for 2nd arg to [sg]etgroups() */
@@ -2865,6 +2871,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
  */
 #define        Uid_t_f         $uidformat              /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     $uidsign                /* UID sign */
+
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */
index bae4f8b..7e48f29 100644 (file)
  */
 #define        Gid_t_f         "d"             /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     -1              /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t gid_t            /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
- *     getgroups() or setgropus()..
+ *     getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
  */
-#define Size_t_size $sizesize          /* */
+#define Size_t_size 4          /* */
 
 /* Size_t:
  *     This symbol holds the type used to declare length parameters
  */
 #define        Uid_t_f         "d"             /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     -1      /* UID sign */
+
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */
index e1d5052..e12856c 100644 (file)
  */
 #define        Gid_t_f         "ld"            /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     -1              /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t gid_t            /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
- *     getgroups() or setgropus()..
+ *     getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
  */
-#define Size_t_size $sizesize          /* */
+#define Size_t_size 4          /* */
 
 /* Size_t:
  *     This symbol holds the type used to declare length parameters
  */
 #define        Uid_t_f         "ld"            /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     -1      /* UID sign */
+  
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */
index beb643b..8f4b183 100644 (file)
  */
 #define        Gid_t_f         "ld"            /**/
 
+/* Gid_t_sign:
+ *     This symbol holds the signedess of a Gid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Gid_t_sign     -1              /* GID sign */
+
 /* Gid_t_size:
  *     This symbol holds the size of a Gid_t in bytes.
  */
  *     This symbol holds the return type of getgid() and the type of
  *     argument to setrgid() and related functions.  Typically,
  *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     gid_t, etc... It may be necessary to include <sys/types.h> to get
  *     any typedef'ed information.
  */
 #define Gid_t gid_t            /* Type for getgid(), etc... */
 
 /* Groups_t:
  *     This symbol holds the type used for the second argument to
- *     getgroups() and setgropus().  Usually, this is the same as
+ *     getgroups() and setgroups().  Usually, this is the same as
  *     gidtype (gid_t) , but sometimes it isn't.
- *     It can be int, ushort, uid_t, etc... 
+ *     It can be int, ushort, gid_t, etc... 
  *     It may be necessary to include <sys/types.h> to get any 
  *     typedef'ed information.  This is only required if you have
- *     getgroups() or setgropus()..
+ *     getgroups() or setgroups()..
  */
 #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
 #define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
  */
-#define Size_t_size $sizesize          /* */
+#define Size_t_size 4  /* */
 
 /* Size_t:
  *     This symbol holds the type used to declare length parameters
  */
 #define        Uid_t_f         "ld"            /**/
 
+/* Uid_t_sign:
+ *     This symbol holds the signedess of a Uid_t.
+ *     1 for unsigned, -1 for signed.
+ */
+#define Uid_t_sign     -1              /* UID sign */
+  
 /* Uid_t_size:
  *     This symbol holds the size of a Uid_t in bytes.
  */