static void read_settings(void) { int old_autolog = autolog_level; int log_file_create_mode; autolog_path = settings_get_str("autolog_path"); autolog_level = !settings_get_bool("autolog") ? 0 : settings_get_level("autolog_level"); if (old_autolog && !autolog_level) autologs_close_all(); /* write to log files with different theme? */ if (log_theme_name != NULL) signal_remove("print format", (SIGNAL_FUNC) sig_print_format); log_theme_name = settings_get_str("log_theme"); if (*log_theme_name == '\0') log_theme_name = NULL; else signal_add("print format", (SIGNAL_FUNC) sig_print_format); log_theme = log_theme_name == NULL ? NULL : theme_load(log_theme_name); log_file_create_mode = octal2dec(settings_get_int("log_create_mode")); log_dir_create_mode = log_file_create_mode; if (log_file_create_mode & 0400) log_dir_create_mode |= 0100; if (log_file_create_mode & 0040) log_dir_create_mode |= 0010; if (log_file_create_mode & 0004) log_dir_create_mode |= 0001; }
static void read_settings(void) { log_timestamp = settings_get_str("log_timestamp"); log_file_create_mode = octal2dec(settings_get_int("log_create_mode")); log_dir_create_mode = log_file_create_mode; if (log_file_create_mode & 0400) log_dir_create_mode |= 0100; if (log_file_create_mode & 0040) log_dir_create_mode |= 0010; if (log_file_create_mode & 0004) log_dir_create_mode |= 0001; }
static void read_settings(void) { rawlog_set_size(settings_get_int("rawlog_lines")); log_file_create_mode = octal2dec(settings_get_int("log_create_mode")); log_dir_create_mode = log_file_create_mode; if (log_file_create_mode & 0400) log_dir_create_mode |= 0100; if (log_file_create_mode & 0040) log_dir_create_mode |= 0010; if (log_file_create_mode & 0004) log_dir_create_mode |= 0001; }
/* SYNTAX: LASTLOG [-] [-file <filename>] [-window <ref#|name>] [-new | -away] [-<level> -<level...>] [-clear] [-count] [-case] [-date] [-regexp | -word] [-before [<#>]] [-after [<#>]] [-<# before+after>] [<pattern>] [<count> [<start>]] */ static void cmd_lastlog(const char *data) { GHashTable *optlist; char *text, *countstr, *start, *fname; void *free_arg; int count, fd; FILE *fhandle; g_return_if_fail(data != NULL); if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_OPTIONS | PARAM_FLAG_UNKNOWN_OPTIONS, "lastlog", &optlist, &text, &countstr, &start)) return; if (*start == '\0' && is_numeric(text, 0) && *text != '0' && (*countstr == '\0' || is_numeric(countstr, 0))) { start = countstr; countstr = text; text = ""; } count = atoi(countstr); if (count == 0) count = -1; /* target where to print it */ fhandle = NULL; fname = g_hash_table_lookup(optlist, "file"); if (fname != NULL) { fname = convert_home(fname); fd = open(fname, O_WRONLY | O_APPEND | O_CREAT, octal2dec(settings_get_int("log_create_mode"))); if (fd != -1) { fhandle = fdopen(fd, "a"); if (fhandle == NULL) close(fd); } g_free(fname); } if (fname != NULL && fhandle == NULL) { printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Could not open lastlog: %s", g_strerror(errno)); } else { show_lastlog(text, optlist, atoi(start), count, fhandle); if (fhandle != NULL) { if (ferror(fhandle)) printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Could not write lastlog: %s", g_strerror(errno)); fclose(fhandle); } } cmd_params_free(free_arg); }
static void read_settings(void) { int old_autolog = autolog_level; int log_file_create_mode; g_free_not_null(autolog_path); autolog_path = g_strdup(settings_get_str("autolog_path")); autolog_level = !settings_get_bool("autolog") ? 0 : settings_get_level("autolog_level"); if (old_autolog && !autolog_level) autologs_close_all(); /* write to log files with different theme? */ if (log_theme_name != NULL) signal_remove("print format", (SIGNAL_FUNC) sig_print_format); g_free_not_null(log_theme_name); log_theme_name = g_strdup(settings_get_str("log_theme")); if (*log_theme_name == '\0') { g_free(log_theme_name); log_theme_name = NULL; } else signal_add("print format", (SIGNAL_FUNC) sig_print_format); log_theme = log_theme_name == NULL ? NULL : theme_load(log_theme_name); log_file_create_mode = octal2dec(settings_get_int("log_create_mode")); log_dir_create_mode = log_file_create_mode; if (log_file_create_mode & 0400) log_dir_create_mode |= 0100; if (log_file_create_mode & 0040) log_dir_create_mode |= 0010; if (log_file_create_mode & 0004) log_dir_create_mode |= 0001; if (autolog_ignore_targets != NULL) g_strfreev(autolog_ignore_targets); autolog_ignore_targets = g_strsplit(settings_get_str("autolog_ignore_targets"), " ", -1); }
static void read_settings(void) { dcc_file_create_mode = octal2dec(settings_get_int("dcc_file_create_mode")); }
static void read_settings(void) { rawlog_set_size(settings_get_int("rawlog_lines")); log_file_create_mode = octal2dec(settings_get_int("log_create_mode")); }
/* callback: net_connect() finished for DCC GET */ void sig_dccget_connected(GET_DCC_REC *dcc) { struct stat statbuf; char *fname, *tempfname, *str; int ret, ret_errno, temphandle, old_umask; if (!dcc->from_dccserver) { if (net_geterror(dcc->handle) != 0) { /* error connecting */ signal_emit("dcc error connect", 1, dcc); dcc_destroy(DCC(dcc)); return; } g_source_remove(dcc->tagconn); dcc->tagconn = -1; } g_free_not_null(dcc->file); dcc->file = dcc_get_download_path(dcc->arg); /* if some plugin wants to change the file name/path here.. */ signal_emit("dcc get receive", 1, dcc); if (stat(dcc->file, &statbuf) == 0 && dcc->get_type == DCC_GET_RENAME) { /* file exists, rename.. */ fname = dcc_get_rename_file(dcc->file); g_free(dcc->file); dcc->file = fname; } if (dcc->get_type != DCC_GET_RESUME) { int dcc_file_create_mode = octal2dec(settings_get_int("dcc_file_create_mode")); /* we want to overwrite the file, remove it here. if it gets created after this, we'll fail. */ unlink(dcc->file); /* just to make sure we won't run into race conditions if download_path is in some global temp directory */ tempfname = g_strconcat(dcc->file, ".XXXXXX", NULL); old_umask = umask(0077); temphandle = mkstemp(tempfname); umask(old_umask); if (temphandle == -1) ret = -1; else ret = fchmod(temphandle, dcc_file_create_mode); close(temphandle); if (ret != -1) { ret = link(tempfname, dcc->file); if (ret == -1 && /* Linux */ (errno == EPERM || /* FUSE */ errno == ENOSYS || /* BSD */ errno == EOPNOTSUPP)) { /* hard links aren't supported - some people want to download stuff to FAT/NTFS/etc partitions, so fallback to rename() */ ret = rename(tempfname, dcc->file); } } /* if ret = 0, we're the file owner now */ dcc->fhandle = ret == -1 ? -1 : open(dcc->file, O_WRONLY | O_TRUNC); /* close/remove the temp file */ ret_errno = errno; unlink(tempfname); g_free(tempfname); if (dcc->fhandle == -1) { signal_emit("dcc error file create", 3, dcc, dcc->file, g_strerror(ret_errno)); dcc_destroy(DCC(dcc)); return; } } dcc->starttime = time(NULL); if (dcc->size == 0) { dcc_close(DCC(dcc)); return; } dcc->tagread = g_input_add(dcc->handle, G_INPUT_READ, (GInputFunction) sig_dccget_receive, dcc); signal_emit("dcc connected", 1, dcc); if (dcc->from_dccserver) { str = g_strdup_printf("121 %s %d\n", dcc->server ? dcc->server->nick : "??", 0); net_transmit(dcc->handle, str, strlen(str)); } }