[PATCH] alias: Fix handling of empty aliases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dash was incorrectly handling empty aliases. When attempting to use an
empty alias with nothing else, I'm (incorrectly) prompted for more
input:

```
$ alias empty=''
$ empty
>
```

Other shells (e.g., bash, yash) correctly handle the lone, empty alias as an
empty command:

```
$ alias empty=''
$ empty
$
```

This patch fixes the parser to handle the case where an alias is empty,
i.e., produces no token.

Signed-off-by: Michael Greenberg <michael.greenberg@xxxxxxxxxx>
diff --git a/src/parser.c b/src/parser.c
index 1f9e8ec..a1d6116 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -470,6 +470,7 @@ next_case:
 		break;
 	case TWORD:
 	case TREDIR:
+	case TNL: /* necessary for empty aliases */
 		tokpushback++;
 		return simplecmd();
 	}
@@ -717,6 +718,7 @@ top:
 		}
 	}
 
+ignorenl: /* empty alias? */
 	if (t != TWORD || quoteflag) {
 		goto out;
 	}
@@ -739,8 +741,11 @@ top:
 		if ((ap = lookupalias(wordtext, 1)) != NULL) {
 			if (*ap->val) {
 				pushstring(ap->val, ap);
+				goto top;
+			} else {
+				t = xxreadtoken();
+				goto ignorenl;
 			}
-			goto top;
 		}
 	}
 out:





[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux