Mercurial > emacs
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. |