comparison src/editfns.c @ 102662:aa16e7d76321

(Fuser_uid, Fuser_real_uid): If UID as EMACS_INT is negative, produce a float value.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 20 Mar 2009 17:58:44 +0000
parents f13c449487ad
children 5dfe0cbf0e1b
comparison
equal deleted inserted replaced
102661:a2aaf6402fc7 102662:aa16e7d76321
1317 return Vuser_real_login_name; 1317 return Vuser_real_login_name;
1318 } 1318 }
1319 1319
1320 DEFUN ("user-uid", Fuser_uid, Suser_uid, 0, 0, 0, 1320 DEFUN ("user-uid", Fuser_uid, Suser_uid, 0, 0, 0,
1321 doc: /* Return the effective uid of Emacs. 1321 doc: /* Return the effective uid of Emacs.
1322 Value is an integer or float, depending on the value. */) 1322 Value is an integer or a float, depending on the value. */)
1323 () 1323 ()
1324 { 1324 {
1325 /* Assignment to EMACS_INT stops GCC whining about limited range of 1325 /* Assignment to EMACS_INT stops GCC whining about limited range of
1326 data type. */ 1326 data type. */
1327 EMACS_INT euid = geteuid (); 1327 EMACS_INT euid = geteuid ();
1328
1329 /* Make sure we don't produce a negative UID due to signed integer
1330 overflow. */
1331 if (euid < 0)
1332 return make_float ((double)geteuid ());
1328 return make_fixnum_or_float (euid); 1333 return make_fixnum_or_float (euid);
1329 } 1334 }
1330 1335
1331 DEFUN ("user-real-uid", Fuser_real_uid, Suser_real_uid, 0, 0, 0, 1336 DEFUN ("user-real-uid", Fuser_real_uid, Suser_real_uid, 0, 0, 0,
1332 doc: /* Return the real uid of Emacs. 1337 doc: /* Return the real uid of Emacs.
1333 Value is an integer or float, depending on the value. */) 1338 Value is an integer or a float, depending on the value. */)
1334 () 1339 ()
1335 { 1340 {
1336 /* Assignment to EMACS_INT stops GCC whining about limited range of 1341 /* Assignment to EMACS_INT stops GCC whining about limited range of
1337 data type. */ 1342 data type. */
1338 EMACS_INT uid = getuid (); 1343 EMACS_INT uid = getuid ();
1344
1345 /* Make sure we don't produce a negative UID due to signed integer
1346 overflow. */
1347 if (uid < 0)
1348 return make_float ((double)getuid ());
1339 return make_fixnum_or_float (uid); 1349 return make_fixnum_or_float (uid);
1340 } 1350 }
1341 1351
1342 DEFUN ("user-full-name", Fuser_full_name, Suser_full_name, 0, 1, 0, 1352 DEFUN ("user-full-name", Fuser_full_name, Suser_full_name, 0, 1, 0,
1343 doc: /* Return the full name of the user logged in, as a string. 1353 doc: /* Return the full name of the user logged in, as a string.