gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r8383 - in GNUnet/src: setup util/os


From: gnunet
Subject: [GNUnet-SVN] r8383 - in GNUnet/src: setup util/os
Date: Sun, 5 Apr 2009 00:33:07 -0600

Author: holindho
Date: 2009-04-05 00:33:07 -0600 (Sun, 05 Apr 2009)
New Revision: 8383

Modified:
   GNUnet/src/setup/Makefile.am
   GNUnet/src/setup/gnunet-macosx-tool.c
   GNUnet/src/util/os/osconfig.c
Log:
improve autostart


Modified: GNUnet/src/setup/Makefile.am
===================================================================
--- GNUnet/src/setup/Makefile.am        2009-04-05 06:28:50 UTC (rev 8382)
+++ GNUnet/src/setup/Makefile.am        2009-04-05 06:33:07 UTC (rev 8383)
@@ -55,6 +55,7 @@
 gnunet_macosx_tool_SOURCES = \
  gnunet-macosx-tool.c
 gnunet_macosx_tool_LDADD = \
+ $(top_builddir)/src/setup/lib/libgnunetsetup.la \
  $(top_builddir)/src/util/libgnunetutil.la 
 
 gnunet_win_tool_SOURCE = \

Modified: GNUnet/src/setup/gnunet-macosx-tool.c
===================================================================
--- GNUnet/src/setup/gnunet-macosx-tool.c       2009-04-05 06:28:50 UTC (rev 
8382)
+++ GNUnet/src/setup/gnunet-macosx-tool.c       2009-04-05 06:33:07 UTC (rev 
8383)
@@ -30,7 +30,9 @@
 #include <sys/types.h>
 #include <string.h>
 
-#include <GNUnet/gnunet_util.h>
+#include "gnunet_util.h"
+#include "gnunet_setup_lib.h"
+#include "lib/wizard_util.h"
 
 static char * input_string()
 {
@@ -199,6 +201,49 @@
        return ret;
 }
 
+int setup_autostart(int argc, char *argv[])
+{
+       struct GNUNET_GE_Context *ectx;
+       struct GNUNET_GE_Memory *ectx_buffer;
+       char *user_name;
+       char *group_name;
+       int do_autostart;
+       int ret;
+
+       if (argc < 4)
+               return -1;
+
+       do_autostart = atoi(argv[2]);
+       user_name = argv[3];
+       if (argc < 5)
+               group_name = NULL;
+       else
+               group_name = argv[4];
+
+       ectx_buffer = GNUNET_GE_memory_create(2);
+       ectx = GNUNET_GE_create_context_memory(GNUNET_GE_ALL, ectx_buffer);
+       GNUNET_os_init(ectx);
+
+       ret = GNUNET_GNS_wiz_autostart_service (ectx, 
+               GNUNET_SERVICE_TYPE_GNUNETD, do_autostart,
+               user_name, group_name);
+       /* TODO: auto-share */  
+
+       if (ret == GNUNET_OK) {
+               output_string("OK");
+               ret = 0;
+       }
+       else {
+               output_string("ERROR");
+               ret = -1;
+       }
+
+       GNUNET_GE_free_context(ectx);
+       GNUNET_GE_memory_free(ectx_buffer);
+
+       return ret;
+}
+
 int main(int argc, char *argv[])
 {
        int ret;
@@ -216,6 +261,9 @@
        else if (strcmp(argv[1], "createUserGroup") == 0) {
                ret = create_accounts(argc, argv);
        }
+       else if (strcmp(argv[1], "setupAutostart") == 0) {
+               ret = setup_autostart(argc, argv);
+       }
  
        return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 }

Modified: GNUnet/src/util/os/osconfig.c
===================================================================
--- GNUnet/src/util/os/osconfig.c       2009-04-05 06:28:50 UTC (rev 8382)
+++ GNUnet/src/util/os/osconfig.c       2009-04-05 06:33:07 UTC (rev 8383)
@@ -336,7 +336,6 @@
 
   return GNUNET_YES;
 #elif defined(OSX)
-/* TODO: has much in common with the linux code */
   struct stat buf;
   int ret;
   int i;
@@ -363,141 +362,104 @@
       return GNUNET_SYSERR;
     }
 
-  if (doAutoStart)
+  if (ACCESS (application, X_OK) != 0)
     {
-      if (ACCESS (application, X_OK) != 0)
+      GNUNET_GE_LOG_STRERROR_FILE (ectx,
+                                   GNUNET_GE_ERROR | GNUNET_GE_USER |
+                                   GNUNET_GE_ADMIN | GNUNET_GE_IMMEDIATE,
+                                   "access", application);
+    }
+
+  if (STAT (initscript, &buf) == -1)
+    {
+      /* create init file */
+      FILE *f = FOPEN (initscript, "w");
+      if (f == NULL)
         {
           GNUNET_GE_LOG_STRERROR_FILE (ectx,
                                        GNUNET_GE_ERROR | GNUNET_GE_USER |
-                                       GNUNET_GE_ADMIN | GNUNET_GE_IMMEDIATE,
-                                       "access", application);
+                                       GNUNET_GE_ADMIN |
+                                       GNUNET_GE_IMMEDIATE, "fopen",
+                                       initscript);
+          GNUNET_free (initscript);
+          return 2;
         }
-
-      if (STAT (initscript, &buf) == -1)
+      fprintf (f,
+               "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+               "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" 
\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\";>\n"
+               "<plist version=\"1.0\">\n"
+               "<dict>\n"
+               "       <key>Disabled</key>\n"
+               "       <%s/>\n"
+               "       <key>OnDemand</key>\n"
+               "       <false/>\n"
+               "       <key>Label</key>\n"
+               "       <string>org.gnunet.%s</string>\n"
+               "       <key>ServiceDescription</key>\n"
+               "       <string>%s</string>\n"
+               "       <key>ProgramArguments</key>\n"
+               "       <array>\n"
+               "               <string>%s</string>\n"
+               "               <string>-n</string>\n"
+               "       </array>\n"
+               "       <key>RunAtLoad</key>\n"
+               "       <true/>\n"
+               "       <key>LowPriorityIO</key>\n"
+               "       <true/>\n"
+               "</dict>\n"
+               "</plist>\n", doAutoStart ? "true"/*"false"*/ : "true", 
+               &application[i], servicename, application);
+      fclose (f);
+      if (0 != CHMOD (initscript, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH))
         {
-          /* create init file */
-          FILE *f = FOPEN (initscript, "w");
-          if (f == NULL)
-            {
-              GNUNET_GE_LOG_STRERROR_FILE (ectx,
-                                           GNUNET_GE_ERROR | GNUNET_GE_USER |
-                                           GNUNET_GE_ADMIN |
-                                           GNUNET_GE_IMMEDIATE, "fopen",
-                                           initscript);
-              GNUNET_free (initscript);
-              return 2;
-            }
-          fprintf (f,
-                   "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-                   "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" 
\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\";>\n"
-                   "<plist version=\"1.0\">\n"
-                   "<dict>\n"
-                   "   <key>Disabled</key>\n"
-                   "   <false/>\n"
-                   "   <key>OnDemand</key>\n"
-                   "   <false/>\n"
-                   "   <key>Label</key>\n"
-                   "   <string>org.gnunet.%s</string>\n"
-                   "   <key>ServiceDescription</key>\n"
-                   "   <string>%s</string>\n"
-                   "   <key>ProgramArguments</key>\n"
-                   "   <array>\n"
-                   "           <string>%s</string>\n"
-                   "           <string>-n</string>\n"
-                   "   </array>\n"
-                   "   <key>RunAtLoad</key>\n"
-                   "   <true/>\n"
-                   "   <key>LowPriorityIO</key>\n"
-                   "   <true/>\n"
-                   "</dict>\n"
-                   "</plist>\n", &application[i], servicename, application);
-          fclose (f);
-          if (0 != CHMOD (initscript, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH))
-            {
-              GNUNET_GE_LOG_STRERROR_FILE (ectx,
-                                           GNUNET_GE_WARNING | GNUNET_GE_USER
-                                           | GNUNET_GE_ADMIN |
-                                           GNUNET_GE_IMMEDIATE, "chmod",
-                                           initscript);
-              GNUNET_free (initscript);
-              return GNUNET_SYSERR;
-            }
+          GNUNET_GE_LOG_STRERROR_FILE (ectx,
+                                       GNUNET_GE_WARNING | GNUNET_GE_USER
+                                       | GNUNET_GE_ADMIN |
+                                       GNUNET_GE_IMMEDIATE, "chmod",
+                                       initscript);
+          GNUNET_free (initscript);
+          return GNUNET_SYSERR;
         }
-      if (STAT (initscript, &buf) != -1)
-        {
-          errno = 0;
-          if (ACCESS ("/bin/launchctl", W_OK) == 0)
-            {
-              char *cmd;
-              cmd = GNUNET_malloc (20 + strlen (initscript) + 1);
-              sprintf (cmd, "/bin/launchctl load %s", initscript);
-              ret = system (cmd);
-              if (ret != 0)
-                {
-                  if (errno != 0)
-                    {
-                      GNUNET_GE_LOG_STRERROR_FILE (ectx,
-                                                   GNUNET_GE_WARNING |
-                                                   GNUNET_GE_USER |
-                                                   GNUNET_GE_ADMIN |
-                                                   GNUNET_GE_IMMEDIATE,
-                                                   "system",
-                                                   "/bin/launchctl");
-                    }
-                  else
-                    {
-                      GNUNET_GE_LOG (ectx,
-                                     GNUNET_GE_WARNING | GNUNET_GE_USER |
-                                     GNUNET_GE_ADMIN | GNUNET_GE_IMMEDIATE,
-                                     _
-                                     ("Command `%s' failed with error code 
%u\n"),
-                                     cmd, WEXITSTATUS (ret));
-                    }
-                  GNUNET_free (cmd);
-                  GNUNET_free (initscript);
-                  return GNUNET_SYSERR;
-                }
-              GNUNET_free (cmd);
-            }
-        }
-      GNUNET_free (initscript);
-      return GNUNET_YES;
     }
-  else
+  if (STAT (initscript, &buf) != -1)
     {
       errno = 0;
       if (ACCESS ("/bin/launchctl", W_OK) == 0)
         {
           char *cmd;
-          cmd = GNUNET_malloc (22 + strlen (initscript) + 1);
-          sprintf (cmd, "/bin/launchctl unload %s", initscript);
+          cmd = GNUNET_malloc (20 + strlen (initscript) + 1);
+          sprintf (cmd, "/bin/launchctl load %s", initscript);
           ret = system (cmd);
           if (ret != 0)
             {
-              GNUNET_GE_LOG_STRERROR_FILE (ectx,
-                                           GNUNET_GE_WARNING | GNUNET_GE_USER
-                                           | GNUNET_GE_ADMIN |
-                                           GNUNET_GE_IMMEDIATE, "system",
-                                           "/bin/launchctl");
+              if (errno != 0)
+                {
+                  GNUNET_GE_LOG_STRERROR_FILE (ectx,
+                                               GNUNET_GE_WARNING |
+                                               GNUNET_GE_USER |
+                                               GNUNET_GE_ADMIN |
+                                               GNUNET_GE_IMMEDIATE,
+                                               "system",
+                                               "/bin/launchctl");
+                }
+              else
+                {
+                  GNUNET_GE_LOG (ectx,
+                                 GNUNET_GE_WARNING | GNUNET_GE_USER |
+                                 GNUNET_GE_ADMIN | GNUNET_GE_IMMEDIATE,
+                                 _
+                                 ("Command `%s' failed with error code %u\n"),
+                                 cmd, WEXITSTATUS (ret));
+                }
               GNUNET_free (cmd);
               GNUNET_free (initscript);
               return GNUNET_SYSERR;
             }
           GNUNET_free (cmd);
         }
-      if ((UNLINK (initscript) == -1) && (errno != ENOENT))
-        {
-          GNUNET_GE_LOG_STRERROR_FILE (ectx,
-                                       GNUNET_GE_WARNING | GNUNET_GE_USER |
-                                       GNUNET_GE_ADMIN | GNUNET_GE_IMMEDIATE,
-                                       "unlink", initscript);
-          GNUNET_free (initscript);
-          return GNUNET_SYSERR;
-        }
-      GNUNET_free (initscript);
-      return GNUNET_YES;
     }
   GNUNET_free (initscript);
+  return GNUNET_YES;
 #else
   struct stat buf;
   int ret;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]