From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from archone.tamu.edu ([128.194.53.42]) by hawkwind.utcs.toronto.edu with SMTP id <2714>; Tue, 19 Jan 1993 02:15:06 -0500 Received: from relay1.UU.NET ([192.48.96.5]) by archone.tamu.edu with SMTP id <45316>; Tue, 19 Jan 1993 01:14:49 -0600 Received: from cygnus.com by relay1.UU.NET with SMTP (5.61/UUNET-internet-primary) id AA02138; Tue, 19 Jan 93 02:14:46 -0500 Received: from localhost.cygnus.com by cygnus.com (4.1/SMI-4.1) id AA21881; Mon, 18 Jan 93 23:14:46 PST Message-Id: <9301190714.AA21881@cygnus.com> To: Steve Rikli Cc: rc@archone.tamu.edu Subject: Re: ~ expansion In-Reply-To: Your message of "Mon, 18 Jan 93 22:35:07 EST." <93Jan18.213510cst.45316@archone.tamu.edu> Date: Tue, 19 Jan 1993 02:14:46 -0500 From: brendan@cygnus.com Here's my hack for it: *** glob.c.~1~ Mon Feb 17 14:45:24 1992 --- glob.c Tue Nov 10 02:08:26 1992 *************** static List *doglob(char *w, char *m) { *** 194,198 **** zero) since doglob gets called iff there's a metacharacter to be matched */ ! if (*s == '\0') { matched = dmatch(".", dir, metadir); goto end; --- 195,199 ---- zero) since doglob gets called iff there's a metacharacter to be matched */ ! if (*s == '\0' && *w != '~') { matched = dmatch(".", dir, metadir); goto end; *************** static List *doglob(char *w, char *m) { *** 203,206 **** --- 204,216 ---- firstdir.n = NULL; matched = &firstdir; + } else if (*w == '~') { + firstdir.w = varlookup("home")->w; + firstdir.n = NULL; + matched = &firstdir; + if (*s == '\0') { + firstdir.m = NULL; + goto end; + } + firstdir.m = metadir; } else { /* *** lex.c.~1~ Tue Mar 31 08:40:20 1992 --- lex.c Tue Nov 10 02:04:25 1992 *************** *** 38,42 **** 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, ! 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, --- 38,42 ---- 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, ! 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, /* ~ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, *************** top: while ((c = gchar()) == ' ' || c == *** 98,104 **** w = RW; i = 0; read: do { buf[i++] = c; ! if (c == '?' || c == '[' || c == '*') saw_meta = TRUE; if (i >= bufsize) --- 98,111 ---- w = RW; i = 0; + if (c == '~') { + c = gchar(); + ugchar(c); + if (c == ' ' || c == '\t') + return TWIDDLE; + c = '~'; + } read: do { buf[i++] = c; ! if (c == '?' || c == '[' || c == '*' || c == '~') saw_meta = TRUE; if (i >= bufsize)