comparison src/realpath.c @ 867:804517e16990

[xemacs-hg @ 2002-06-05 09:54:39 by ben] Textual renaming: text/char names abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, callint.c, casefiddle.c, casetab.c, charset.h, chartab.c, chartab.h, cmds.c, console-gtk.h, console-msw.c, console-msw.h, console-stream.c, console-tty.c, console-x.c, console-x.h, console.h, data.c, device-msw.c, device-x.c, dialog-msw.c, dired-msw.c, dired.c, doc.c, doprnt.c, editfns.c, eldap.c, emodules.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-unixoid.c, events.c, events.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, font-lock.c, frame-gtk.c, frame-msw.c, frame-x.c, frame.c, glyphs-eimage.c, glyphs-msw.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gui-x.c, gui-x.h, gui.c, gui.h, hpplay.c, indent.c, insdel.c, insdel.h, intl-win32.c, keymap.c, line-number.c, line-number.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, md5.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-ccl.c, mule-charset.c, mule-coding.c, mule-wnnfns.c, ndir.h, nt.c, objects-gtk.c, objects-gtk.h, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, procimpl.h, realpath.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, redisplay.h, regex.c, search.c, select-common.h, select-gtk.c, select-x.c, sound.h, symbols.c, syntax.c, syntax.h, sysdep.c, sysdep.h, sysdir.h, sysfile.h, sysproc.h, syspwd.h, systime.h, syswindows.h, termcap.c, tests.c, text.c, text.h, toolbar-common.c, tooltalk.c, ui-gtk.c, unexnt.c, unicode.c, win32.c: Text/char naming rationalization. [a] distinguish between "charptr" when it refers to operations on the pointer itself and when it refers to operations on text; and [b] use consistent naming for everything referring to internal format, i.e. Itext == text in internal format Ibyte == a byte in such text Ichar == a char as represented in internal character format thus e.g. set_charptr_emchar -> set_itext_ichar The pre and post tags on either side of this change are: pre-internal-format-textual-renaming post-internal-format-textual-renaming See the Internals Manual for details of exactly how this was done, how to handle the change in your workspace, etc.
author ben
date Wed, 05 Jun 2002 09:58:45 +0000
parents e7ee5f8bde58
children 5df795348f45
comparison
equal deleted inserted replaced
866:613552a02607 867:804517e16990
53 #define ABS_START(name) (name + ABS_LENGTH (name)) 53 #define ABS_START(name) (name + ABS_LENGTH (name))
54 54
55 #if defined (WIN32_NATIVE) 55 #if defined (WIN32_NATIVE)
56 /* Length of start of absolute filename. */ 56 /* Length of start of absolute filename. */
57 # define ABS_LENGTH(name) (mswindows_abs_start (name)) 57 # define ABS_LENGTH(name) (mswindows_abs_start (name))
58 static int mswindows_abs_start (const Intbyte *name); 58 static int mswindows_abs_start (const Ibyte *name);
59 # define readlink_and_correct_case mswindows_readlink_and_correct_case 59 # define readlink_and_correct_case mswindows_readlink_and_correct_case
60 #else 60 #else
61 # ifdef CYGWIN 61 # ifdef CYGWIN
62 # ifdef WIN32_FILENAMES 62 # ifdef WIN32_FILENAMES
63 # define ABS_LENGTH(name) (mswindows_abs_start (name)) 63 # define ABS_LENGTH(name) (mswindows_abs_start (name))
64 static int mswindows_abs_start (const Intbyte * name); 64 static int mswindows_abs_start (const Ibyte * name);
65 # else 65 # else
66 # define ABS_LENGTH(name) (IS_DIRECTORY_SEP (*name) ? \ 66 # define ABS_LENGTH(name) (IS_DIRECTORY_SEP (*name) ? \
67 (IS_DIRECTORY_SEP (name[1]) ? 2 : 1) : 0) 67 (IS_DIRECTORY_SEP (name[1]) ? 2 : 1) : 0)
68 # endif 68 # endif
69 # define readlink_and_correct_case cygwin_readlink_and_correct_case 69 # define readlink_and_correct_case cygwin_readlink_and_correct_case
79 case) of a file. (#### "readlink" is used extremely misleadingly 79 case) of a file. (#### "readlink" is used extremely misleadingly
80 here. This is much more like "truename"!) UNC servers and shares 80 here. This is much more like "truename"!) UNC servers and shares
81 are lower-cased. Directories must be given without trailing 81 are lower-cased. Directories must be given without trailing
82 '/'. One day, this could read Win2K's reparse points. */ 82 '/'. One day, this could read Win2K's reparse points. */
83 static int 83 static int
84 mswindows_readlink_and_correct_case (const Intbyte *name, Intbyte *buf, 84 mswindows_readlink_and_correct_case (const Ibyte *name, Ibyte *buf,
85 int size) 85 int size)
86 { 86 {
87 int len = 0; 87 int len = 0;
88 int err = 0; 88 int err = 0;
89 const Intbyte *lastname; 89 const Ibyte *lastname;
90 int count = 0; 90 int count = 0;
91 const Intbyte *tmp; 91 const Ibyte *tmp;
92 DECLARE_EISTRING (result); 92 DECLARE_EISTRING (result);
93 93
94 assert (*name); 94 assert (*name);
95 95
96 /* Sort of check we have a valid filename. */ 96 /* Sort of check we have a valid filename. */
153 #endif /* WIN32_NATIVE || CYGWIN */ 153 #endif /* WIN32_NATIVE || CYGWIN */
154 154
155 #ifdef CYGWIN 155 #ifdef CYGWIN
156 /* Call readlink and try to find out the correct case for the file. */ 156 /* Call readlink and try to find out the correct case for the file. */
157 static int 157 static int
158 cygwin_readlink_and_correct_case (const Intbyte *name, Intbyte *buf, 158 cygwin_readlink_and_correct_case (const Ibyte *name, Ibyte *buf,
159 int size) 159 int size)
160 { 160 {
161 int n = qxe_readlink (name, buf, size); 161 int n = qxe_readlink (name, buf, size);
162 if (n < 0 && errno == EINVAL) 162 if (n < 0 && errno == EINVAL)
163 { 163 {
164 /* The file may exist, but isn't a symlink. Try to find the 164 /* The file may exist, but isn't a symlink. Try to find the
165 right name. */ 165 right name. */
166 Intbyte *tmp = 166 Ibyte *tmp =
167 (Intbyte *) ALLOCA (cygwin_posix_to_win32_path_list_buf_size 167 (Ibyte *) ALLOCA (cygwin_posix_to_win32_path_list_buf_size
168 ((char *) name)); 168 ((char *) name));
169 cygwin_posix_to_win32_path_list ((char *) name, (char *) tmp); 169 cygwin_posix_to_win32_path_list ((char *) name, (char *) tmp);
170 n = mswindows_readlink_and_correct_case (tmp, buf, size); 170 n = mswindows_readlink_and_correct_case (tmp, buf, size);
171 } 171 }
172 return n; 172 return n;
177 #ifndef ELOOP 177 #ifndef ELOOP
178 #define ELOOP 10062 /* = WSAELOOP in winsock.h */ 178 #define ELOOP 10062 /* = WSAELOOP in winsock.h */
179 #endif 179 #endif
180 /* Length of start of absolute filename. */ 180 /* Length of start of absolute filename. */
181 static int 181 static int
182 mswindows_abs_start (const Intbyte *name) 182 mswindows_abs_start (const Ibyte *name)
183 { 183 {
184 if (isalpha (*name) && IS_DEVICE_SEP (name[1]) 184 if (isalpha (*name) && IS_DEVICE_SEP (name[1])
185 && IS_DIRECTORY_SEP (name[2])) 185 && IS_DIRECTORY_SEP (name[2]))
186 return 3; 186 return 3;
187 else if (IS_DIRECTORY_SEP (*name)) 187 else if (IS_DIRECTORY_SEP (*name))
192 #endif /* WIN32_NATIVE */ 192 #endif /* WIN32_NATIVE */
193 193
194 /* Mule Note: This function works with and returns 194 /* Mule Note: This function works with and returns
195 internally-formatted strings. */ 195 internally-formatted strings. */
196 196
197 Intbyte * 197 Ibyte *
198 qxe_realpath (const Intbyte *path, Intbyte *resolved_path) 198 qxe_realpath (const Ibyte *path, Ibyte *resolved_path)
199 { 199 {
200 Intbyte copy_path[PATH_MAX]; 200 Ibyte copy_path[PATH_MAX];
201 Intbyte *new_path = resolved_path; 201 Ibyte *new_path = resolved_path;
202 Intbyte *max_path; 202 Ibyte *max_path;
203 #if defined (HAVE_READLINK) || defined (WIN32_NATIVE) 203 #if defined (HAVE_READLINK) || defined (WIN32_NATIVE)
204 int readlinks = 0; 204 int readlinks = 0;
205 Intbyte link_path[PATH_MAX]; 205 Ibyte link_path[PATH_MAX];
206 int n; 206 int n;
207 int abslen = ABS_LENGTH (path); 207 int abslen = ABS_LENGTH (path);
208 #endif 208 #endif
209 209
210 /* Make a copy of the source path since we may need to modify it. */ 210 /* Make a copy of the source path since we may need to modify it. */