/* common stuff for cgi-fcgi-interp and prefork-interp */
+/*
+ * Copyright 2016-2022 Ian Jackson and contributors to chiark-utils
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ * There is NO WARRANTY.
+ */
#ifndef PREFORK_H
#define PREFORK_H
extern const char *interp, *ident, *script, *socket_path, *lock_path;
extern bool logging;
extern struct sha256_ctx identsc;
+extern const char *run_base;
extern const char our_name[];
#define PREFORK_CMDINFOS \
{ "help", 0, .call=of_help }, \
{ 0, 'g', 1, .sassignto= &ident }, \
- { 0, 'G', 1, .call= ident_addstring }, \
+ { 0, 'G', 1, .call= off_ident_addstring }, \
{ 0, 'E', 1, .call= off_ident_addenv },
void process_opts(const char *const **argv_io);
void usagemessage(void);
void of_help(const struct cmdinfo *ci, const char *val);
void of_iassign(const struct cmdinfo *ci, const char *val);
-void ident_addstring(const struct cmdinfo *ci, const char *string);
-void off_ident_addenv(const struct cmdinfo *ci, const char *name);
void ident_addinit(void);
bool stabs_same_inode(struct stat *a, struct stat *b);
+void ident_addstring(char key, const char *string);
+
+void off_ident_addstring(const struct cmdinfo *ci, const char *name);
+void off_ident_addenv(const struct cmdinfo *ci, const char *name);
+
+void ident_add_key_byte(char key);
+
+#define IDENT_ADD_OBJ(key, obj) do{ \
+ ident_add_key_byte(key); \
+ sha256_update(&identsc, sizeof((obj)), (void*)&obj); \
+ }while(0)
#endif /*PREFORK_H*/