aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/rc/parse.h
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2021-10-20 13:10:54 -0700
committerNicholas Noll <nbnoll@eml.cc>2021-10-20 13:10:54 -0700
commit888679027c2e9b43d1485d970df8170ac4fda29f (patch)
treef46c257e6be1f47f4aa69d31a64643c76457a64b /sys/cmd/rc/parse.h
parent6d50d5b97d49a74a8faf587ec2bbf234626adf0c (diff)
Refactored interactivity to track with thread.
Hit a bit of a stopping point. Specifically, the way XAsync runs currently is by forking the execution context and having the child run the async code while the parent runs the remainder. The problem with this architecture is it doesn't interact well with job control. When we fork, we create a new process group. Thus the Xasync fork becomes the new leader. In short, our traversal of the parse tree as to be less "preorder" and more "in order", i.e. from the leaves up. The "left" command of the pipeline should be the "leader" of the process group.
Diffstat (limited to 'sys/cmd/rc/parse.h')
-rw-r--r--sys/cmd/rc/parse.h48
1 files changed, 30 insertions, 18 deletions
diff --git a/sys/cmd/rc/parse.h b/sys/cmd/rc/parse.h
index b42cc2b..c30606d 100644
--- a/sys/cmd/rc/parse.h
+++ b/sys/cmd/rc/parse.h
@@ -60,14 +60,20 @@ extern int yydebug;
Telse = 261, /* Telse */
Tbang = 262, /* Tbang */
Tsubshell = 263, /* Tsubshell */
- Targs = 264, /* Targs */
- Tindex = 265, /* Tindex */
- Tbasic = 266, /* Tbasic */
- Tparen = 267, /* Tparen */
- Tblock = 268, /* Tblock */
- Twhile = 269, /* Twhile */
- Tcount = 270, /* Tcount */
- Tflat = 271 /* Tflat */
+ Toror = 264, /* Toror */
+ Tandand = 265, /* Tandand */
+ There = 266, /* There */
+ Tredir = 267, /* Tredir */
+ Tpipe = 268, /* Tpipe */
+ Tdup = 269, /* Tdup */
+ Tbasic = 270, /* Tbasic */
+ Tparen = 271, /* Tparen */
+ Tblock = 272, /* Tblock */
+ Targs = 273, /* Targs */
+ Tindex = 274, /* Tindex */
+ Twhile = 275, /* Twhile */
+ Tcount = 276, /* Tcount */
+ Tflat = 277 /* Tflat */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -82,24 +88,30 @@ extern int yydebug;
#define Telse 261
#define Tbang 262
#define Tsubshell 263
-#define Targs 264
-#define Tindex 265
-#define Tbasic 266
-#define Tparen 267
-#define Tblock 268
-#define Twhile 269
-#define Tcount 270
-#define Tflat 271
+#define Toror 264
+#define Tandand 265
+#define There 266
+#define Tredir 267
+#define Tpipe 268
+#define Tdup 269
+#define Tbasic 270
+#define Tparen 271
+#define Tblock 272
+#define Targs 273
+#define Tindex 274
+#define Twhile 275
+#define Tcount 276
+#define Tflat 277
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 22 "sys/cmd/rc/syntax.y"
+#line 23 "sys/cmd/rc/syntax.y"
struct Tree *tree;
-#line 103 "sys/cmd/rc/parse.h"
+#line 115 "sys/cmd/rc/parse.h"
};
typedef union YYSTYPE YYSTYPE;