diff -ruN -ruN man-1.5k/src/man.c man-1.5k-new/src/man.c --- man-1.5k/src/man.c 2002-07-17 14:33:20.000000000 -0700 +++ man-1.5k-new/src/man.c 2003-02-05 15:19:51.000000000 -0800 @@ -56,8 +56,9 @@ const char *pager; char *colon_sep_section_list; char *roff_directive; -char *dohp = 0; -int do_irix; +char *dohp = 0; +int do_irix = 0; +int do_win32 = 0; int apropos; int whatis; int nocats; /* set by -c option: do not use cat page */ @@ -1007,6 +1008,8 @@ flags |= DO_HP; if (do_irix) flags |= DO_IRIX; + if (do_win32) + flags |= DO_WIN32; mp = manfile(name, section, flags, section_list, mandirlist, convert_to_cat); @@ -1169,7 +1172,7 @@ char *tmp; char *section = 0; -#ifdef __CYGWIN32__ +#ifdef __CYGWIN__ extern int optind; #endif @@ -1214,6 +1217,11 @@ if (getenv("MAN_IRIX_CATNAMES")) do_irix = 1; + /* Handle lack of ':' in NTFS file names */ +#if defined(_WIN32) || defined(__CYGWIN__) + do_win32 = 1; +#endif + progname = mkprogname (argv[0]); get_permissions (); diff -ruN -ruN man-1.5k/src/manfile.c man-1.5k-new/src/manfile.c --- man-1.5k/src/manfile.c 2002-07-17 14:41:30.000000000 -0700 +++ man-1.5k-new/src/manfile.c 2003-02-05 15:22:56.000000000 -0800 @@ -241,16 +241,28 @@ * Only types (man, cat, scat) permitted in FLAGS are allowed. */ struct manpage * -manfile(const char *name, const char *section, int flags, +manfile(const char *name_, const char *section, int flags, char **sectionlist, char **manpath, const char *((*tocat)(const char *man_filename, const char *ext, int flags))) { char **sl; struct manpage *res; + char *name = strncpy(malloc(strlen(name_)+1), name_, strlen(name_)+1); standards = (flags & (FHS | FSSTND | DO_HP | DO_IRIX)); to_cat_filename = tocat; + if (flags & DO_WIN32) { /* Convert : sequences to a ? */ + char* where; + while ((where = strchr(name, ':')) != NULL) { + char* pos = where+1; + *where++ = '?'; + while (*where == ':') { where++; } + while (*where != '\0') { *pos++ = *where++; } + *pos = '\0'; + } + } + if (!name || !manpath) /* error msg? */ res = 0; else if (section) @@ -263,5 +275,8 @@ break; } } + + free(name); + return res; } diff -ruN -ruN man-1.5k/src/manfile.h man-1.5k-new/src/manfile.h --- man-1.5k/src/manfile.h 2002-07-17 13:47:05.000000000 -0700 +++ man-1.5k-new/src/manfile.h 2003-02-05 14:30:27.000000000 -0800 @@ -22,6 +22,9 @@ /* IRIX has a peculiar cat page naming */ #define DO_IRIX 256 /* cat page ls.z, not ls.1.z */ +/* WIN32 NTFS does not allow ':' in file names */ +#define DO_WIN32 512 /* convert : sequences to one ? */ + extern struct manpage * manfile(const char *name, const char *section, int flags, char **sectionlist, char **manpath,