⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osconfig.c

📁 GNUnet是一个安全的点对点网络框架
💻 C
📖 第 1 页 / 共 2 页
字号:
              RegCloseKey (hKey);            }          else            return 5;        }    }  else    {      if (IsWinNT ())        {          switch (UninstallService (servicename))            {            case 0:              break;            case 1:              return GNUNET_NO;            case 2:              return 2;            case 3:              return 6;            case 4:              return 3;            default:              return GNUNET_SYSERR;            }        }      else        {          HKEY hKey;          if (RegOpenKeyEx (HKEY_LOCAL_MACHINE,                            "Software\\Microsoft\\Windows\\CurrentVersion\\Run",                            0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)            {              RegDeleteValue (hKey, servicename);              RegCloseKey (hKey);            }          else            return 5;        }    }  return GNUNET_YES;#else  struct stat buf;  int ret;  int i;  char *initscript;  i = strlen (application) - 1;  if (i <= 0)    return GNUNET_SYSERR;  while ((i > 0) && (application[i] != DIR_SEPARATOR))    i--;  initscript = GNUNET_malloc (strlen (&application[i]) + 13);  strcpy (initscript, "/etc/init.d/");  strcat (initscript, &application[i]);  /* Unix */  if ((ACCESS ("/usr/sbin/update-rc.d", X_OK) != 0))    {      if ((ACCESS ("/sbin/rc-update", X_OK) != 0))        {          GNUNET_GE_LOG_STRERROR_FILE (ectx,                                       GNUNET_GE_ERROR | GNUNET_GE_USER |                                       GNUNET_GE_ADMIN | GNUNET_GE_IMMEDIATE,                                       "access", "/usr/sbin/update-rc.d");          GNUNET_free (initscript);          return GNUNET_SYSERR;        }    }  /* Debian */  if (doAutoStart)    {      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, "fopen",                                           "/etc/init.d/gnunetd");              GNUNET_free (initscript);              return 2;            }          fprintf (f,                   "#!/bin/sh\n"                   "#\n"                   "# Automatically created by %s\n"                   "#\n"                   "\n"                   "PIDFILE=/var/run/gnunetd/%s.pid\n"                   "APPNAME=%s\n"                   "\n"                   "case \"$1\" in\n"                   "  start)\n"                   "  	echo -n \"Starting $APPNAME: \"\n"                   "  	%s\n && echo ok || echo failed\n"                   "  	;;\n"                   "  stop)\n"                   "  	echo -n \"Stopping $APPNAME: \"\n"                   "  	kill `cat $PIDFILE`\n && echo ok || echo failed\n"                   "  	;;\n"                   "  reload)\n"                   "  	echo -n \"Reloading $APPNAME: \"\n"                   "  	kill -HUP `cat $PIDFILE`\n && echo ok || echo failed\n"                   "  	;;\n"                   "  restart|force-reload)\n"                   "  	echo \"Restarting $APPNAME...\"\n"                   "  	$0 stop\n"                   "  	sleep 1\n"                   "  	$0 start\n"                   "  	;;\n"                   "  *)\n"                   "  	echo \"Usage: %s {start|stop|reload|restart|force-reload}\" >&2\n"                   "  	exit 1\n"                   "  	;;\n"                   "\n"                   "esac\n"                   "exit 0\n",                   "gnunet-setup",                   application, servicename, application, initscript);          fclose (f);          if (0 != CHMOD (initscript,                          S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH))            {              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 ("/usr/sbin/update-rc.d", W_OK) == 0)            {              ret = system ("/usr/sbin/update-rc.d gnunetd defaults");              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",                                                   "/usr/sbin/update-rc.d");                    }                  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"),                                     "/usr/sbin/update-rc.d gnunetd defaults",                                     WEXITSTATUS (ret));                    }                  GNUNET_free (initscript);                  return GNUNET_SYSERR;                }            }          else if (ACCESS ("/sbin/rc-update", W_OK) == 0)            {              ret = system ("/sbin/rc-update add gnunetd default");              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",                                                   "/sbin/rc-update");                    }                  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"),                                     "/sbin/rc-update add gnunetd default",                                     WEXITSTATUS (ret));                    }                  GNUNET_free (initscript);                  return GNUNET_SYSERR;                }            }        }      GNUNET_free (initscript);      return GNUNET_YES;    }  else    {                           /* REMOVE autostart */      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;        }      errno = 0;      if (ACCESS ("/usr/sbin/update-rc.d", W_OK) == 0)        {          ret = system ("/usr/sbin/update-rc.d gnunetd remove");          if (ret != 0)            {              GNUNET_GE_LOG_STRERROR_FILE (ectx,                                           GNUNET_GE_WARNING | GNUNET_GE_USER                                           | GNUNET_GE_ADMIN |                                           GNUNET_GE_IMMEDIATE, "system",                                           "/usr/sbin/update-rc.d");              GNUNET_free (initscript);              return GNUNET_SYSERR;            }        }      else if (ACCESS ("/sbin/rc-update", W_OK) == 0)        {          ret = system ("/sbin/rc-update del gnunetd");          if (ret != 0)            {              GNUNET_GE_LOG_STRERROR_FILE (ectx,                                           GNUNET_GE_WARNING | GNUNET_GE_USER                                           | GNUNET_GE_ADMIN |                                           GNUNET_GE_IMMEDIATE, "system",                                           "/sbin/rc-update");              GNUNET_free (initscript);              return GNUNET_SYSERR;            }        }      GNUNET_free (initscript);      return GNUNET_YES;    }  GNUNET_free (initscript);#endif  return GNUNET_SYSERR;}/* end of osconfig.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -