[Top][All Lists]
[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r8383 - in GNUnet/src: setup util/os,
gnunet <=