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