diff options
| author | Eli Zaretskii | 2009-03-20 17:59:38 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2009-03-20 17:59:38 +0000 |
| commit | e00553bf16bacd9ab51ea81f14ded352aad616bd (patch) | |
| tree | f25e21680e4834b7e56b7575bdf23300e1c4f904 /src | |
| parent | 51105b132455a6a37633a782823d4c10eae7e0cb (diff) | |
| download | emacs-e00553bf16bacd9ab51ea81f14ded352aad616bd.tar.gz emacs-e00553bf16bacd9ab51ea81f14ded352aad616bd.zip | |
(Fuser_uid, Fuser_real_uid): If UID as EMACS_INT is negative, produce
a float value.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 8 | ||||
| -rw-r--r-- | src/editfns.c | 14 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 8812516e41c..1f95b2846d5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,11 @@ | |||
| 1 | 2009-03-20 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * editfns.c (Fuser_uid, Fuser_real_uid): If UID as EMACS_INT is | ||
| 4 | negative, produce a float value. | ||
| 5 | |||
| 6 | * dired.c (make_uid, make_gid): New functions. | ||
| 7 | (Ffile_attributes): Use them to avoid negative UID and GID. | ||
| 8 | |||
| 1 | 2009-03-20 Juanma Barranquero <lekktu@gmail.com> | 9 | 2009-03-20 Juanma Barranquero <lekktu@gmail.com> |
| 2 | 10 | ||
| 3 | * keyboard.c (Fcurrent_idle_time): Reflow docstring. | 11 | * keyboard.c (Fcurrent_idle_time): Reflow docstring. |
diff --git a/src/editfns.c b/src/editfns.c index cfce1f2add6..aac670bb35b 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -1319,23 +1319,33 @@ This ignores the environment variables LOGNAME and USER, so it differs from | |||
| 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 | ||