X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cprogs%2Fprefork.c;h=eca03c85f5177e39a37033162958d612595f2a4a;hb=913ff471b4a46dc7e41d7c3e5db55165c02e2b2e;hp=e25aadf5af74e443585de21182a7fc66309e19a7;hpb=7581f9cdbacd891daeb3c8e04ba54487ae762069;p=chiark-utils.git diff --git a/cprogs/prefork.c b/cprogs/prefork.c index e25aadf..eca03c8 100644 --- a/cprogs/prefork.c +++ b/cprogs/prefork.c @@ -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