Mercurial > hg > xemacs-beta
comparison src/sysdep.c @ 4985:358aa3bb603f
Automatic merge
| author | Ben Wing <ben@xemacs.org> |
|---|---|
| date | Fri, 05 Feb 2010 12:12:28 -0600 |
| parents | 3c3c1d139863 |
| children | d4f666cda5e6 861f2601a38b |
comparison
equal
deleted
inserted
replaced
| 4984:f23cd0184dcf | 4985:358aa3bb603f |
|---|---|
| 2831 ret = _getcwd (cwd, cwdsize); | 2831 ret = _getcwd (cwd, cwdsize); |
| 2832 | 2832 |
| 2833 if (ret) | 2833 if (ret) |
| 2834 { | 2834 { |
| 2835 Ibyte *retin; | 2835 Ibyte *retin; |
| 2836 TSTR_TO_C_STRING_MALLOC (ret, retin); | 2836 retin = TSTR_TO_ITEXT_MALLOC (ret); |
| 2837 xfree (cwd); | 2837 xfree (cwd); |
| 2838 return retin; | 2838 return retin; |
| 2839 } | 2839 } |
| 2840 #else | 2840 #else |
| 2841 Extbyte *ret = getcwd (cwd, cwdsize); | 2841 Extbyte *ret = getcwd (cwd, cwdsize); |
| 2842 if (ret) | 2842 if (ret) |
| 2843 { | 2843 { |
| 2844 Ibyte *retin; | 2844 Ibyte *retin; |
| 2845 EXTERNAL_TO_C_STRING_MALLOC (ret, retin, Qfile_name); | 2845 retin = EXTERNAL_TO_ITEXT_MALLOC (ret, Qfile_name); |
| 2846 xfree (cwd); | 2846 xfree (cwd); |
| 2847 return retin; | 2847 return retin; |
| 2848 } | 2848 } |
| 2849 #endif /* WIN32_NATIVE */ | 2849 #endif /* WIN32_NATIVE */ |
| 2850 | 2850 |
| 2863 Extbyte chingame_limitos_arbitrarios[PATH_MAX_TCHAR]; | 2863 Extbyte chingame_limitos_arbitrarios[PATH_MAX_TCHAR]; |
| 2864 Ibyte *ret2; | 2864 Ibyte *ret2; |
| 2865 | 2865 |
| 2866 if (!getwd (chingame_limitos_arbitrarios)) | 2866 if (!getwd (chingame_limitos_arbitrarios)) |
| 2867 return 0; | 2867 return 0; |
| 2868 EXTERNAL_TO_C_STRING_MALLOC (chingame_limitos_arbitrarios, ret2, Qfile_name); | 2868 ret2 = EXTERNAL_TO_ITEXT_MALLOC (chingame_limitos_arbitrarios, Qfile_name); |
| 2869 return ret2; | 2869 return ret2; |
| 2870 #endif /* HAVE_GETCWD */ | 2870 #endif /* HAVE_GETCWD */ |
| 2871 } | 2871 } |
| 2872 | 2872 |
| 2873 /***************** file-information calls ******************/ | 2873 /***************** file-information calls ******************/ |
| 3088 | 3088 |
| 3089 for (argc = 0; argv[argc]; argc++) | 3089 for (argc = 0; argv[argc]; argc++) |
| 3090 ; | 3090 ; |
| 3091 new_argv = alloca_array (Extbyte *, argc + 1); | 3091 new_argv = alloca_array (Extbyte *, argc + 1); |
| 3092 for (i = 0; i < argc; i++) | 3092 for (i = 0; i < argc; i++) |
| 3093 C_STRING_TO_EXTERNAL (argv[i], new_argv[i], Qcommand_argument_encoding); | 3093 new_argv[i] = ITEXT_TO_EXTERNAL (argv[i], Qcommand_argument_encoding); |
| 3094 new_argv[argc] = NULL; | 3094 new_argv[argc] = NULL; |
| 3095 | 3095 |
| 3096 for (envc = 0; envp[envc]; envc++) | 3096 for (envc = 0; envp[envc]; envc++) |
| 3097 ; | 3097 ; |
| 3098 new_envp = alloca_array (Extbyte *, envc + 1); | 3098 new_envp = alloca_array (Extbyte *, envc + 1); |
| 3099 for (i = 0; i < envc; i++) | 3099 for (i = 0; i < envc; i++) |
| 3100 C_STRING_TO_EXTERNAL (envp[i], new_envp[i], | 3100 new_envp[i] = ITEXT_TO_EXTERNAL (envp[i], Qenvironment_variable_encoding); |
| 3101 Qenvironment_variable_encoding); | |
| 3102 new_envp[envc] = NULL; | 3101 new_envp[envc] = NULL; |
| 3103 | 3102 |
| 3104 #if defined (WIN32_NATIVE) | 3103 #if defined (WIN32_NATIVE) |
| 3105 if (XEUNICODE_P) | 3104 if (XEUNICODE_P) |
| 3106 return _wexecve ((const wchar_t *) pathext, | 3105 return _wexecve ((const wchar_t *) pathext, |
| 3141 xfree (cached_pwd.pw_dir); | 3140 xfree (cached_pwd.pw_dir); |
| 3142 if (cached_pwd.pw_shell) | 3141 if (cached_pwd.pw_shell) |
| 3143 xfree (cached_pwd.pw_shell); | 3142 xfree (cached_pwd.pw_shell); |
| 3144 | 3143 |
| 3145 cached_pwd = *pwd; | 3144 cached_pwd = *pwd; |
| 3146 if (cached_pwd.pw_name) | 3145 |
| 3147 TO_INTERNAL_FORMAT (C_STRING, cached_pwd.pw_name, | 3146 #define FROB(field, encoding) \ |
| 3148 C_STRING_MALLOC, cached_pwd.pw_name, | 3147 do \ |
| 3149 Quser_name_encoding); | 3148 { \ |
| 3150 if (cached_pwd.pw_passwd) | 3149 if (cached_pwd.field) \ |
| 3151 TO_INTERNAL_FORMAT (C_STRING, cached_pwd.pw_passwd, | 3150 cached_pwd.field = (CIbyte *) \ |
| 3152 C_STRING_MALLOC, cached_pwd.pw_passwd, | 3151 EXTERNAL_TO_ITEXT_MALLOC (cached_pwd.field, encoding); \ |
| 3153 Quser_name_encoding); | 3152 } while (0) |
| 3154 if (cached_pwd.pw_gecos) | 3153 |
| 3155 TO_INTERNAL_FORMAT (C_STRING, cached_pwd.pw_gecos, | 3154 FROB (pw_name, Quser_name_encoding); |
| 3156 C_STRING_MALLOC, cached_pwd.pw_gecos, | 3155 FROB (pw_passwd, Quser_name_encoding); |
| 3157 Quser_name_encoding); | 3156 FROB (pw_gecos, Quser_name_encoding); |
| 3158 if (cached_pwd.pw_dir) | 3157 FROB (pw_dir, Qfile_name); |
| 3159 TO_INTERNAL_FORMAT (C_STRING, cached_pwd.pw_dir, | 3158 FROB (pw_shell, Qfile_name); |
| 3160 C_STRING_MALLOC, cached_pwd.pw_dir, Qfile_name); | 3159 #undef FROB |
| 3161 if (cached_pwd.pw_shell) | |
| 3162 TO_INTERNAL_FORMAT (C_STRING, cached_pwd.pw_shell, | |
| 3163 C_STRING_MALLOC, cached_pwd.pw_shell, Qfile_name); | |
| 3164 return &cached_pwd; | 3160 return &cached_pwd; |
| 3165 } | 3161 } |
| 3166 | 3162 |
| 3167 struct passwd * | 3163 struct passwd * |
| 3168 qxe_getpwnam (const Ibyte *name) | 3164 qxe_getpwnam (const Ibyte *name) |
| 3169 { | 3165 { |
| 3170 #ifdef WIN32_NATIVE | 3166 #ifdef WIN32_NATIVE |
| 3171 /* Synthetic versions are defined in nt.c and already do conversion. */ | 3167 /* Synthetic versions are defined in nt.c and already do conversion. */ |
| 3172 return getpwnam (name); | 3168 return getpwnam (name); |
| 3173 #else | 3169 #else |
| 3174 Extbyte *nameext; | 3170 Extbyte *nameext = ITEXT_TO_EXTERNAL (name, Quser_name_encoding); |
| 3175 C_STRING_TO_EXTERNAL (name, nameext, Quser_name_encoding); | |
| 3176 | 3171 |
| 3177 return copy_in_passwd (getpwnam (nameext)); | 3172 return copy_in_passwd (getpwnam (nameext)); |
| 3178 #endif /* WIN32_NATIVE */ | 3173 #endif /* WIN32_NATIVE */ |
| 3179 } | 3174 } |
| 3180 | 3175 |
| 3210 Extbyte *str = (Extbyte *) ctime (t); | 3205 Extbyte *str = (Extbyte *) ctime (t); |
| 3211 if (!str) /* can happen on MS Windows */ | 3206 if (!str) /* can happen on MS Windows */ |
| 3212 return (Ibyte *) "Sun Jan 01 00:00:00 1970"; | 3207 return (Ibyte *) "Sun Jan 01 00:00:00 1970"; |
| 3213 if (ctime_static) | 3208 if (ctime_static) |
| 3214 xfree (ctime_static); | 3209 xfree (ctime_static); |
| 3215 EXTERNAL_TO_C_STRING_MALLOC (str, ctime_static, Qtime_function_encoding); | 3210 ctime_static = EXTERNAL_TO_ITEXT_MALLOC (str, Qtime_function_encoding); |
| 3216 return ctime_static; | 3211 return ctime_static; |
| 3217 } | 3212 } |
| 3218 | 3213 |
| 3219 | 3214 |
| 3220 /************************************************************************/ | 3215 /************************************************************************/ |
| 3385 #elif defined (HAVE_UTIME) | 3380 #elif defined (HAVE_UTIME) |
| 3386 struct utimbuf utb; | 3381 struct utimbuf utb; |
| 3387 Extbyte *filename; | 3382 Extbyte *filename; |
| 3388 utb.actime = EMACS_SECS (atime); | 3383 utb.actime = EMACS_SECS (atime); |
| 3389 utb.modtime = EMACS_SECS (mtime); | 3384 utb.modtime = EMACS_SECS (mtime); |
| 3390 LISP_STRING_TO_EXTERNAL (path, filename, Qfile_name); | 3385 LISP_PATHNAME_CONVERT_OUT (path, filename); |
| 3391 return utime (filename, &utb); | 3386 return utime (filename, &utb); |
| 3392 #elif defined (HAVE_UTIMES) | 3387 #elif defined (HAVE_UTIMES) |
| 3393 struct timeval tv[2]; | 3388 struct timeval tv[2]; |
| 3394 Extbyte *filename; | 3389 Extbyte *filename; |
| 3395 tv[0] = atime; | 3390 tv[0] = atime; |
| 3396 tv[1] = mtime; | 3391 tv[1] = mtime; |
| 3397 LISP_STRING_TO_EXTERNAL (path, filename, Qfile_name); | 3392 LISP_PATHNAME_CONVERT_OUT (path, filename); |
| 3398 return utimes (filename, tv); | 3393 return utimes (filename, tv); |
| 3399 #else | 3394 #else |
| 3400 /* No file times setting function available. */ | 3395 /* No file times setting function available. */ |
| 3401 return -1; | 3396 return -1; |
| 3402 #endif | 3397 #endif |
