chiark / gitweb /
prefork-interp: ident, options
[chiark-utils.git] / cprogs / prefork.c
index e25aadf5af74e443585de21182a7fc66309e19a7..eca03c85f5177e39a37033162958d612595f2a4a 100644 (file)
@@ -55,19 +55,28 @@ void of_iassign(const struct cmdinfo *ci, const char *val) {
   *ci->iassignto = v;
 }
 
-void ident_addstring(const struct cmdinfo *ci, const char *string) {
-  /* ci may be 0 and is provided so this can be .call */
+static void ident_addbyte(char c) {
+  IDENT_ADD_OBJ(c);
+}
+
+void ident_addstring(const char *string) {
   sha256_update(&identsc,strlen(string)+1,string);
 }
 
+void off_ident_addstring(const struct cmdinfo *ci, const char *string) {
+  ident_addbyte('S');
+  ident_addstring(string);
+}
+
 void off_ident_addenv(const struct cmdinfo *ci, const char *name) {
   const char *val = getenv(name);
+  ident_addbyte('E');
   if (val) {
     sha256_update(&identsc,strlen(name),name); /* no nul */
     sha256_update(&identsc,1,"=");
-    ident_addstring(0,val);
+    ident_addstring(val);
   } else {
-    ident_addstring(0,name);
+    ident_addstring(name);
   }
 }
 
@@ -152,9 +161,9 @@ void find_socket_path(void) {
     unsigned char bbuf[32];
     int i;
 
-    ident_addstring(0,interp);
+    ident_addstring(interp);
     if (script)
-      ident_addstring(0,script);
+      ident_addstring(script);
     sha256_digest(&identsc,sizeof(bbuf),bbuf);
 
     for (i=0; i<identlen; i += 2)