Browse Source

Flag 'silent' for sym

Serj Kalichev 5 months ago
parent
commit
077fa07a46
2 changed files with 15 additions and 2 deletions
  1. 8 2
      klish/kscheme/ksym.c
  2. 7 0
      klish/ksym.h

+ 8 - 2
klish/kscheme/ksym.c

@@ -14,8 +14,9 @@
 struct ksym_s {
 	char *name;
 	ksym_fn function;
-	tri_t permanent;
-	tri_t sync;
+	tri_t permanent; // Dry-run option has no effect for permanent sym
+	tri_t sync; // Don't fork before sync sym execution
+	bool_t silent; // Silent syn doesn't have stdin, stdout, stderr
 };
 
 
@@ -37,6 +38,10 @@ KSET(sym, tri_t, permanent);
 KGET(sym, tri_t, sync);
 KSET(sym, tri_t, sync);
 
+// Silent
+KGET(sym, bool_t, silent);
+KSET(sym, bool_t, silent);
+
 
 ksym_t *ksym_new(const char *name, ksym_fn function)
 {
@@ -55,6 +60,7 @@ ksym_t *ksym_new(const char *name, ksym_fn function)
 	sym->function = function;
 	sym->permanent = TRI_UNDEFINED;
 	sym->sync = TRI_UNDEFINED;
+	sym->silent = BOOL_FALSE;
 
 	return sym;
 }

+ 7 - 0
klish/ksym.h

@@ -23,6 +23,10 @@ typedef int (*ksym_fn)(kcontext_t *context);
 #define KSYM_UNSYNC TRI_FALSE
 #define KSYM_SYNC TRI_TRUE
 
+// Aliases for silent flag
+#define KSYM_SILENT BOOL_TRUE
+#define KSYM_NONSILENT TRI_FALSE
+
 
 C_DECL_BEGIN
 
@@ -43,6 +47,9 @@ bool_t ksym_set_permanent(ksym_t *sym, tri_t permanent);
 tri_t ksym_sync(const ksym_t *sym);
 bool_t ksym_set_sync(ksym_t *sym, tri_t sync);
 
+bool_t ksym_silent(const ksym_t *sym);
+bool_t ksym_set_silent(ksym_t *sym, bool_t silent);
+
 C_DECL_END
 
 #endif // _klish_ksym_h