chiark / gitweb /
prefork-interp: fixes and tests
[chiark-utils.git] / cprogs / prefork-interp.c
index 2215ded6dc776668d3b7c873ef017455ac5a40b7..7e350870f872395aa92c8b9bb215737fc6309da0 100644 (file)
 
 #include "prefork.h"
 
-struct sockaddr_un sun;
+const char our_name[] = "prefork-interp";
+
+struct sockaddr_un sockaddr_sun;
 
 #define ACK_BYTE '\n'
 
-static struct sockaddr_un socket_sun;
 static const char *const *executor_argv;
 
+void fusagemessage(FILE *f) {
+  fprintf(f, "usage: #!/usr/bin/prefork-interp [<options>]\n");
+}
+
+const struct cmdinfo cmdinfos[]= {
+  PREFORK_CMDINFOS
+  { 0 }
+};
+
 static void propagate_exit_status(int status, const char *what) {
   int r;
 
@@ -270,8 +280,8 @@ static FILE *connect_existing(void) {
   fd = socket(AF_UNIX, SOCK_STREAM, 0);
   if (fd==-1) diee("socket() for client");
 
-  socklen_t salen = sizeof(sun);
-  r = connect(fd, (const struct sockaddr*)&socket_sun, salen);
+  socklen_t salen = sizeof(sockaddr_sun);
+  r = connect(fd, (const struct sockaddr*)&sockaddr_sun, salen);
   if (r==-1) {
     if (errno==ECONNREFUSED || errno==ENOENT) goto x_garbage;
     diee("connect() %s", socket_path);
@@ -340,8 +350,8 @@ static FILE *connect_or_spawn(void) {
   int sfd = socket(AF_UNIX, SOCK_STREAM, 0);
   if (sfd<0) diee("socket() for new listener");
 
-  socklen_t salen = sizeof(sun);
-  r= bind(sfd, (const struct sockaddr*)&socket_sun, salen);
+  socklen_t salen = sizeof(sockaddr_sun);
+  r= bind(sfd, (const struct sockaddr*)&sockaddr_sun, salen);
   if (r<0) diee("bind() on new listener");
 
   // We never want callers to get ECONNREFUSED.  But:
@@ -399,10 +409,10 @@ int main(int argc_unused, const char *const *argv) {
   make_executor_argv(argv);
 
   find_socket_path();
-  FILLZERO(sun);
-  sun.sun_family = AF_UNIX;
-  assert(strlen(socket_path) <= sizeof(sun.sun_path));
-  strncpy(sun.sun_path, socket_path, sizeof(sun.sun_path));
+  FILLZERO(sockaddr_sun);
+  sockaddr_sun.sun_family = AF_UNIX;
+  assert(strlen(socket_path) <= sizeof(sockaddr_sun.sun_path));
+  strncpy(sockaddr_sun.sun_path, socket_path, sizeof(sockaddr_sun.sun_path));
 
   FILE *call_sock = connect_or_spawn();
   uint32_t status;