chiark / gitweb /
prefork-interp: ident
[chiark-utils.git] / cprogs / prefork.c
index eca03c85f5177e39a37033162958d612595f2a4a..e82fb11a0b89dbfee37328afcb9a30f61fc9fadc 100644 (file)
@@ -55,28 +55,26 @@ void of_iassign(const struct cmdinfo *ci, const char *val) {
   *ci->iassignto = v;
 }
 
-static void ident_addbyte(char c) {
-  IDENT_ADD_OBJ(c);
+void ident_add_key_byte(char key) {
+  sha256_update(&identsc,1,&key);
 }
 
-void ident_addstring(const char *string) {
+void ident_addstring(char key, const char *string) {
+  ident_add_key_byte(key);
   sha256_update(&identsc,strlen(string)+1,string);
 }
 
 void off_ident_addstring(const struct cmdinfo *ci, const char *string) {
-  ident_addbyte('S');
-  ident_addstring(string);
+  ident_addstring('G', string);
 }
 
 void off_ident_addenv(const struct cmdinfo *ci, const char *name) {
+  ident_addstring('E', 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(val);
+    ident_addstring('v', val);
   } else {
-    ident_addstring(name);
+    ident_add_key_byte(0);
   }
 }
 
@@ -161,9 +159,9 @@ void find_socket_path(void) {
     unsigned char bbuf[32];
     int i;
 
-    ident_addstring(interp);
+    ident_addstring('i', interp);
     if (script)
-      ident_addstring(script);
+      ident_addstring('s', script);
     sha256_digest(&identsc,sizeof(bbuf),bbuf);
 
     for (i=0; i<identlen; i += 2)