/* * Mangle a filename pointed to by src into a buffer pointed * to by dst; ends on encountering any whitespace. * dst is preserved. * * This verifies that a filename is < FilENAME_MAX characters, * doesn't contain whitespace, zero-pads the output buffer, * and removes trailing dots and redumndant slashes, so "repe * cmpsb" can do a compare, and the path-searching routine gets * a bit of an easier job. * */ static void iso_mangle_name(char *dst, const char *src) { char *p = dst; int i = FILENAME_MAX - 1; while (not_whitespace(*src)) { if ( *src == '/' ) { if ( *(src+1) == '/' ) { i--; src++; continue; } } *dst++ = *src ++; i--; } while ( 1 ) { if ( dst == p ) break; if ( (*(dst-1) != '.') && (*(dst-1) != '/') ) break; dst --; i ++; } i ++; for (; i > 0; i -- ) *dst++ = '\0'; }
/* * mangle a filename pointed to by _src_ into a buffer pointed * to by _dst_; ends on encountering any whitespace. * * This deliberately does not attempt to do any conversion of * pathname separators. * */ static void pxe_mangle_name(char *dst, const char *src) { size_t len = FILENAME_MAX-1; while (len-- && not_whitespace(*src)) *dst++ = *src++; *dst = '\0'; }