diff options
author | Marco Peereboom <marco@conformal.com> | 2011-01-21 21:57:01 +0000 |
---|---|---|
committer | Marco Peereboom <marco@conformal.com> | 2011-01-21 21:57:01 +0000 |
commit | bf815f9400b6f3a1625b5b8fc09bfc439e9a20b3 (patch) | |
tree | 31ca1bd9aee382f1441c09ff53c74f92040984e4 | |
parent | 69787b9c1b6cd2f244b426790df6f5b64b9b0ae1 (diff) | |
download | xombrero-bf815f9400b6f3a1625b5b8fc09bfc439e9a20b3.tar.gz |
untested diff so it comes out.
-rw-r--r-- | xxxterm.c | 114 |
1 files changed, 74 insertions, 40 deletions
diff --git a/xxxterm.c b/xxxterm.c index e261fbc..1e0b1ed 100644 --- a/xxxterm.c +++ b/xxxterm.c @@ -413,7 +413,6 @@ int show_tabs = 1; /* show tabs on notebook */ int show_url = 1; /* show url toolbar on notebook */ int tabless = 0; /* allow only 1 tab */ int enable_socket = 0; -int socket_fd = -1; int single_instance = 0; /* only allow one xxxterm to run */ int fancy_bar = 1; /* fancy toolbar */ @@ -4009,9 +4008,6 @@ restart(struct tab *t, struct karg *args) a.s = XT_RESTART_TABS_FILE; save_tabs(t, &a); - - if (enable_socket && socket_fd != -1) - close(socket_fd); execvp(start_argv[0], start_argv); /* NOTREACHED */ @@ -6565,30 +6561,6 @@ done: } void -create_dir(char **pathptr, int size, const char *dirname, const char *name) -{ - struct stat sb; - char *path = pathptr; - - if (path[0] == '\0') - snprintf(path, size, "%s/%s", pwd->pw_dir, - XT_DIR); - if (stat(path, &sb)) { - if (mkdir(path, S_IRWXU) == -1) - err(1, "mkdir %s(%s)", name, path); - if (stat(path, &sb)) - err(1, "stat %s(%s)", name, path); - } - if (S_ISDIR(sb.st_mode) == 0) - errx(1, "%s(%s) not a dir", name, path); - if (((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO))) != S_IRWXU) { - warnx("fixing invalid permissions on %s(%s)", name, path); - if (chmod(path, S_IRWXU) == -1) - err(1, "chmod"); - } -} - -void usage(void) { fprintf(stderr, @@ -6682,27 +6654,91 @@ main(int argc, char *argv[]) config_parse(conf, 0); /* working directory */ - create_dir(&work_dir, sizeof work_dir, XT_DIR, "work_dir"); + snprintf(work_dir, sizeof work_dir, "%s/%s", pwd->pw_dir, XT_DIR); + if (stat(work_dir, &sb)) { + if (mkdir(work_dir, S_IRWXU) == -1) + err(1, "mkdir work_dir"); + if (stat(work_dir, &sb)) + err(1, "stat work_dir"); + } + if (S_ISDIR(sb.st_mode) == 0) + errx(1, "%s not a dir", work_dir); + if (((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO))) != S_IRWXU) { + warnx("fixing invalid permissions on %s", work_dir); + if (chmod(work_dir, S_IRWXU) == -1) + err(1, "chmod"); + } /* icon cache dir */ - create_dir(&cache_dir, sizeof cache_dir, XT_CACHE_DIR, "cache_dir"); + snprintf(cache_dir, sizeof cache_dir, "%s/%s/%s", + pwd->pw_dir, XT_DIR, XT_CACHE_DIR); + if (stat(cache_dir, &sb)) { + if (mkdir(cache_dir, S_IRWXU) == -1) + err(1, "mkdir cache_dir"); + if (stat(cache_dir, &sb)) + err(1, "stat cache_dir"); + } + if (S_ISDIR(sb.st_mode) == 0) + errx(1, "%s not a dir", cache_dir); + if (((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO))) != S_IRWXU) { + warnx("fixing invalid permissions on %s", cache_dir); + if (chmod(cache_dir, S_IRWXU) == -1) + err(1, "chmod"); + } /* certs dir */ - create_dir(&certs_dir, sizeof certs_dir, XT_CERT_DIR, "certs_dir"); + snprintf(certs_dir, sizeof certs_dir, "%s/%s/%s", + pwd->pw_dir, XT_DIR, XT_CERT_DIR); + if (stat(certs_dir, &sb)) { + if (mkdir(certs_dir, S_IRWXU) == -1) + err(1, "mkdir certs_dir"); + if (stat(certs_dir, &sb)) + err(1, "stat certs_dir"); + } + if (S_ISDIR(sb.st_mode) == 0) + errx(1, "%s not a dir", certs_dir); + if (((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO))) != S_IRWXU) { + warnx("fixing invalid permissions on %s", certs_dir); + if (chmod(certs_dir, S_IRWXU) == -1) + err(1, "chmod"); + } /* sessions dir */ - create_dir(&sessions_dir, sizeof sessions_dir, XT_SESSIONS_DIR, - "sessions_dir"); - + snprintf(sessions_dir, sizeof sessions_dir, "%s/%s/%s", + pwd->pw_dir, XT_DIR, XT_SESSIONS_DIR); + if (stat(sessions_dir, &sb)) { + if (mkdir(sessions_dir, S_IRWXU) == -1) + err(1, "mkdir sessions_dir"); + if (stat(sessions_dir, &sb)) + err(1, "stat sessions_dir"); + } + if (S_ISDIR(sb.st_mode) == 0) + errx(1, "%s not a dir", sessions_dir); + if (((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO))) != S_IRWXU) { + warnx("fixing invalid permissions on %s", sessions_dir); + if (chmod(sessions_dir, S_IRWXU) == -1) + err(1, "chmod"); + } /* runtime settings that can override config file */ if (runtime_settings[0] != '\0') config_parse(runtime_settings, 1); /* download dir */ if (!strcmp(download_dir, pwd->pw_dir)) - download_dir[0] = '\0'; - create_dir(&download_dir, sizeof download_dir, "downloads", - "download_dir"); + strlcat(download_dir, "/downloads", sizeof download_dir); + if (stat(download_dir, &sb)) { + if (mkdir(download_dir, S_IRWXU) == -1) + err(1, "mkdir download_dir"); + if (stat(download_dir, &sb)) + err(1, "stat download_dir"); + } + if (S_ISDIR(sb.st_mode) == 0) + errx(1, "%s not a dir", download_dir); + if (((sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO))) != S_IRWXU) { + warnx("fixing invalid permissions on %s", download_dir); + if (chmod(download_dir, S_IRWXU) == -1) + err(1, "chmod"); + } /* favorites file */ snprintf(file, sizeof file, "%s/%s", work_dir, XT_FAVS_FILE); @@ -6779,10 +6815,8 @@ main(int argc, char *argv[]) create_new_tab(home, NULL, 1); if (enable_socket) - if ((s = build_socket()) != -1) { - socket_fd = s; + if ((s = build_socket()) != -1) gdk_input_add(s, GDK_INPUT_READ, socket_watcher, NULL); - } gtk_main(); |