* path.cc (struct symlink_info): Add extn and ext_tacked_on fields.
(path_conv::check): Only tack on extension if a known one didn't already exist. (suffix_scan::has): Return pointer to known extension. (symlink_info::check): Record location of extension, if any.
This commit is contained in:
		| @@ -1,3 +1,11 @@ | ||||
| Tue Apr 10 22:02:53 2001  Christopher Faylor <cgf@cygnus.com> | ||||
|  | ||||
| 	* path.cc (struct symlink_info): Add extn and ext_tacked_on fields. | ||||
| 	(path_conv::check): Only tack on extension if a known one didn't | ||||
| 	already exist. | ||||
| 	(suffix_scan::has): Return pointer to known extension. | ||||
| 	(symlink_info::check): Record location of extension, if any. | ||||
|  | ||||
| 2001-04-09  Egor Duda  <deo@logos-m.ru> | ||||
|  | ||||
| 	* fhandler.h (class fhandler_socket): Add members and methods to | ||||
|   | ||||
| @@ -94,10 +94,12 @@ struct symlink_info | ||||
| { | ||||
|   char buf[3 + MAX_PATH * 3]; | ||||
|   char *ext_here; | ||||
|   int extn; | ||||
|   char *contents; | ||||
|   unsigned pflags; | ||||
|   DWORD fileattr; | ||||
|   int is_symlink; | ||||
|   bool ext_tacked_on; | ||||
|   int error; | ||||
|   symlink_info (): contents (buf + MAX_PATH + 1) {} | ||||
|   int check (const char *path, const suffix_info *suffixes); | ||||
| @@ -377,10 +379,11 @@ path_conv::check (const char *src, unsigned opt, | ||||
|     } | ||||
|  | ||||
| fillin: | ||||
|   if (sym.ext_here && !(opt & PC_SYM_CONTENTS)) | ||||
|   if (sym.ext_here && *sym.ext_here && !(opt & PC_SYM_CONTENTS)) | ||||
|     { | ||||
|       known_suffix = strchr (this->path, '\0'); | ||||
|       strcpy (known_suffix, sym.ext_here); | ||||
|       known_suffix = this->path + sym.extn; | ||||
|       if (sym.ext_tacked_on) | ||||
| 	strcpy (known_suffix, sym.ext_here); | ||||
|     } | ||||
|  | ||||
| out: | ||||
| @@ -2467,8 +2470,11 @@ suffix_scan::has (const char *in_path, const suffix_info *in_suffixes) | ||||
|   suffixes = suffixes_start = in_suffixes; | ||||
|  | ||||
|   char *ext_here = strrchr (in_path, '.'); | ||||
|   path = in_path; | ||||
|   eopath = strchr (path, '\0'); | ||||
|  | ||||
|   if (!ext_here) | ||||
|     goto done; | ||||
|     goto noext; | ||||
|  | ||||
|   if (suffixes) | ||||
|     { | ||||
| @@ -2489,10 +2495,11 @@ suffix_scan::has (const char *in_path, const suffix_info *in_suffixes) | ||||
|       suffixes = NULL; | ||||
|     } | ||||
|  | ||||
|  noext: | ||||
|   ext_here = eopath; | ||||
|  | ||||
|  done: | ||||
|   path = in_path; | ||||
|   eopath = strchr (path, '\0'); | ||||
|   return eopath; | ||||
|   return ext_here; | ||||
| } | ||||
|  | ||||
| int | ||||
| @@ -2574,6 +2581,9 @@ symlink_info::check (const char *path, const suffix_info *suffixes) | ||||
|  | ||||
|   is_symlink = TRUE; | ||||
|   ext_here = suffix.has (path, suffixes); | ||||
|   extn = ext_here - path; | ||||
|  | ||||
|   ext_tacked_on = !*ext_here; | ||||
|  | ||||
|   while (suffix.next ()) | ||||
|     { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user