*/
#ifndef lint
-static char sccsid[] = "@(#)glob.c 5.18 (Berkeley) %G%";
+static char sccsid[] = "@(#)glob.c 5.21 (Berkeley) %G%";
#endif /* not lint */
#include <sys/param.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#if __STDC__
+# include <stdarg.h>
+#else
+# include <varargs.h>
+#endif
+
#include "csh.h"
#include "extern.h"
*/
vo = globexpand(v);
if (noglob || (gflag & G_GLOB) == 0) {
+ if (vo[0] == NULL) {
+ xfree((ptr_t) vo);
+ return (Strsave(STRNULL));
+ }
if (vo[1] != NULL)
return (handleone(str, vo, action));
else {
setname(short2str(str));
stderror(ERR_NAME | ERR_NOMATCH);
}
- else if (vl[1])
+ if (vl[0] == NULL) {
+ xfree((ptr_t) vl);
+ return (Strsave(STRNULL));
+ }
+ if (vl[1] != NULL)
return (handleone(str, vl, action));
else {
str = strip(*vl);
xfree((ptr_t) vl);
+ return (str);
}
- return (str);
}
Char **
return (0);
if (match)
continue;
- if (rangec == '-') {
- match = (stringc <= *pattern &&
- *(pattern - 2) <= stringc);
+ if (rangec == '-' && *(pattern - 2) != '[' && *pattern != ']') {
+ match = (stringc <= (*pattern & TRIM) &&
+ (*(pattern - 2) & TRIM) <= stringc);
pattern++;
}
else