/* * File handling for LPR * * Read from an init file. * Read from a file, expanding tabs. */ #include #include #include #include "lpr.h" extern BOOL fVerify; /* From lpr.c - for verifying our progression */ #define cchIniMax 80 /* length of line in tools.ini file */ #define cchPathMax 128 /* maximum length of USER env var. */ /* from fgetl.c - expand tabs and return lines w/o separators */ int colTab = 8; /* Tab stops every colTab columns */ char* __cdecl fgetl(sz, cch, fh) /* returns line from file (no CRLFs); returns NULL if EOF */ /* Maps nulls read in into .'s */ char *sz; int cch; FILE *fh; { register int c; register char *p; /* remember NUL at end */ cch--; p = sz; while (cch) { c = getc(fh); if (c == EOF || c == '\n') break; if (c != '\r') if (c != '\t') { *p++ = (char)((unsigned)c ? (unsigned)c : (unsigned)'.'); cch--; } else { c = (int)(min(colTab - ((p-sz) % colTab), cch)); memset(p, ' ', c); p += c; cch -= c; } } *p = 0; return (!( (c == EOF) && (p == sz) )) ? sz : NULL; } char *SzFindPath(szDirlist, szFullname, szFile) /* SzFindPath -- Creates szFullname from first entry in szDirlist and szFile. * The remaining directory list is returned. If the directory * list is empty, NULL is returned. */ char *szDirlist; char *szFullname; char *szFile; { #define chDirSep ';' /* seperator for entries in directory list */ #define chDirDelim '\\' /* end of directory name character */ register char *pch; register char *szRc; /* returned directory list */ if ((pch = strchr(szDirlist, chDirSep)) != 0) { *pch = (char)NULL; /* replace ';' with null */ szRc = pch + 1; } else { pch = strchr(szDirlist,'\0'); szRc = NULL; } strcpy(szFullname,szDirlist); if (szRc != NULL) { /* We MUST restore the input string */ *(szRc-1) = chDirSep; } /* if directory name doesn't already end with chDirDelim, append it */ if (*(pch-1) != chDirDelim) { pch = szFullname + strlen(szFullname); *pch++ = chDirDelim; *pch = (char)NULL; } strcat(szFullname,szFile); return(szRc); }