Added empty network setup scripts
[mtetherd] / util.c
1 /*
2   mtetherd
3   (c) 2010 Gregor Riepl <onitake@gmail.com>
4   
5   Tethering utility for Maemo
6   
7   This program is free software: you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation, either version 3 of the License, or
10   (at your option) any later version.
11   
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16   
17   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #include <stdlib.h>
22 #include <stdio.h>
23 #include <unistd.h>
24 #include <glib.h>
25
26 static const char *MODULE_LIST = "/proc/modules";
27
28 gboolean mtetherd_scan_modules(const char *module) {
29         g_message("Scanning %s", MODULE_LIST);
30
31         FILE *fp = fopen(MODULE_LIST, "r");
32         if (!fp) {
33                 return FALSE;
34         }
35         gboolean found = FALSE;
36         char *line = NULL;
37         while (!found && getline(&line, NULL, fp) != -1) {
38                 g_debug("Checking if '%s' starts with %s...", line, module);
39                 if (g_str_has_prefix(line, module) == 0) {
40                         g_message("Found %s", module);
41                         found = TRUE;
42                 }
43                 free(line);
44                 line = NULL;
45         }
46         fclose(fp);
47         return found;
48 }
49
50 gboolean mtetherd_launch_script(const char *command[]) {
51         pid_t pid = fork();
52         if (pid == 0) {
53                 if (execv(command[0], (char **const) command) == -1) {
54                         exit(1);
55                 }
56         } else if (pid == -1) {
57                 // error forking
58                 return FALSE;
59         }
60         // launch ok
61         return TRUE;
62 }
63