--- ray/src/common/fixargv0.c 1992/10/09 10:27:41 2.1 +++ ray/src/common/fixargv0.c 2016/08/05 00:12:46 2.8 @@ -1,33 +1,35 @@ -/* Copyright (c) 1992 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: fixargv0.c,v 2.8 2016/08/05 00:12:46 greg Exp $"; #endif - /* * Fix argv[0] for DOS environments + * + * External symbols declared in paths.h */ +#include +#include char * -fixargv0(av0) /* extract command name from full path */ -char *av0; +fixargv0(char *av0) /* extract command name from full path */ { - register char *cp = av0; + char *cp = av0, *end; while (*cp) cp++; /* start from end */ + end = cp; while (cp-- > av0) switch (*cp) { /* fix up command name */ case '.': /* remove extension */ *cp = '\0'; + end = cp; continue; case '\\': /* remove directory */ - return(cp+1); + /* make sure the original pointer remains the same */ + memmove(av0, cp+1, end-cp); + return(av0); default: /* convert to lower case */ *cp = tolower(*cp); continue; } return(av0); } - -