Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=gservice.git;a=commitdiff;h=89cba02d5ee0bfad08b1ac18583c8f3e69989a92

commit 89cba02d5ee0bfad08b1ac18583c8f3e69989a92
Author: Priyank <priy...@frugalware.org>
Date:   Sun Jan 18 12:45:37 2009 +0530

gservice-backend: Added new functions for activating/deactivating servies
* gsvc_service_activate() and gsvc_service_deactivate()

diff --git a/src/gservice-backend.c b/src/gservice-backend.c
index a1f7d1a..a9ba9ac 100644
--- a/src/gservice-backend.c
+++ b/src/gservice-backend.c
@@ -369,42 +369,6 @@ gsvc_glist_to_string (GList *list)
return ret;
}

-/* strips ON/OFF/FAILED from a cmd line output */
-gchar *
-gsvc_strip_service_status (const char *line)
-{
-       char    *temp = NULL;
-       char    *ptr = NULL;
-       char    *ret = NULL;
-
-       temp = g_strdup (line);
-       ptr = g_strdup (g_strstrip(g_strcanon(line,"ON",' ')));
-       if (!strcmp(ptr,"ON"))
-       {
-               ret = g_strdup (ptr);
-               g_free (temp);
-               return ret;
-       }
-       temp = g_strdup (line);
-       ptr = g_strdup (g_strstrip(g_strcanon(line,"OFF",' ')));
-       if (!strcmp(ptr,"OFF"))
-       {
-               ret = g_strdup (ptr);
-               g_free (temp);
-               return ret;
-       }
-       temp = g_strdup (line);
-       ptr = g_strdup (g_strstrip(g_strcanon(line,"FAILED",' ')));
-       if (!strcmp(ptr,"FAILED"))
-       {
-               ret = g_strdup (ptr);
-               g_free (temp);
-               return ret;
-       }
-
-       return ret;
-}
-
/* returns the status of service GSVC_ON or GSVC_OFF */
/* returns GSVC_ERR if status not supported */
gint
@@ -528,4 +492,35 @@ gsvc_service_stop (const char *service, int *retval)
return ret;
}

+gboolean
+gsvc_service_activate (const char *service)
+{
+       char    *cmd = NULL;
+       char    *svc = NULL;
+       gboolean ret = FALSE;
+
+       svc = g_strdup_printf ("rc.%s", service);
+       cmd = g_strdup_printf ("chkconfig --add %s", svc);
+       g_free (svc);
+       if (!system(cmd))
+               ret = TRUE;
+
+       return ret;
+}
+
+gboolean
+gsvc_service_deactivate (const char *service)
+{
+       char    *cmd = NULL;
+       char    *svc = NULL;
+       gboolean ret = FALSE;
+
+       svc = g_strdup_printf ("rc.%s", service);
+       cmd = g_strdup_printf ("chkconfig --del %s", svc);
+       g_free (svc);
+       if (!system(cmd))
+               ret = TRUE;
+
+       return ret;
+}

diff --git a/src/gservice-backend.h b/src/gservice-backend.h
index 5bba6a9..2e1076f 100644
--- a/src/gservice-backend.h
+++ b/src/gservice-backend.h
@@ -35,5 +35,12 @@ char * gsvc_service_start (const char *service, int *retval);
/* return value of the service command is specified in retval */
char * gsvc_service_stop (const char *service, int *retval);

+/* activates a service. simply runs 'chkconfig --add rc.foo' */
+/* one should note that this doesn't start the service */
+gboolean gsvc_service_activate (const char *service);
+
+/* deactivates a service. simply runs 'chkconfig --del rc.foo' */
+gboolean gsvc_service_deactivate (const char *service);
+
#endif
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to