int acl_scan_dir_push(ACL_SCAN_DIR *scan, const char *path) { const char *myname = "acl_scan_dir_push"; ACL_SCAN_INFO *info; info = (ACL_SCAN_INFO *) acl_mymalloc(sizeof(*info)); if (scan->current) { info->path = acl_concatenate(ACL_SCAN_DIR_PATH(scan), "/", path, (char *) 0); } else { info->path = acl_mystrdup(path); } if ((info->dir_name = opendir(info->path)) == 0) { char tbuf[256]; acl_msg_error("%s(%d), %s: open directory(%s) error(%s)", __FILE__, __LINE__, myname, info->path, acl_last_strerror(tbuf, sizeof(tbuf))); return (-1); } if (acl_msg_verbose > 1) acl_msg_info("%s: open %s", myname, info->path); info->parent = scan->current; scan->current = info; return (0); }
void http_util_set_req_cookie(HTTP_UTIL *http_util, const char *name, const char *value) { HTTP_HDR_ENTRY *hdr_entry; char *ptr; if (name == NULL || *name == 0 || value == NULL) return; hdr_entry = http_hdr_entry(&http_util->hdr_req->hdr, name); if (hdr_entry == NULL) { http_hdr_put_str(&http_util->hdr_req->hdr, name, value); return; } ptr = acl_concatenate(hdr_entry->value, "; ", name, "=", value, NULL); acl_myfree(hdr_entry->value); hdr_entry->value = ptr; }
int acl_scan_dir_push(ACL_SCAN_DIR *scan, const char *path) { const char *myname = "acl_scan_dir_push"; ACL_SCAN_INFO *info; if (path == NULL || *path == 0) acl_msg_fatal("%s(%d), %s: path null", __FILE__, __LINE__, myname); info = (ACL_SCAN_INFO *) acl_mymalloc(sizeof(*info)); if (scan->current) info->path = acl_concatenate(ACL_SCAN_DIR_PATH(scan), PATH_SEP_S, path, (char *) 0); else { size_t len = strlen(path); const char *ptr = path + len - 1; #ifdef ACL_WINDOWS while (ptr > path && (*ptr == '/' || *ptr == '\\')) #else while (ptr > path && *ptr == '/') #endif ptr--; len = ptr - path + 1; info->path = (char*) acl_mymalloc(len + 1); memcpy(info->path, path, len); info->path[len] = 0; } if ((info->dir_name = opendir(info->path)) == 0) { acl_msg_error("%s(%d), %s: open directory(%s) error(%s)", __FILE__, __LINE__, myname, info->path, acl_last_serror()); return -1; } info->parent = scan->current; scan->current = info; return 0; }
static int __log_open(const char *filename, void *ctx) { LOG_WRAP *h_log = (LOG_WRAP *) ctx; int logme = 0; char *facility_name = NULL; E_LOG_PRIORITY_T priority = E_LOG_INFO; E_LOG_ACTION_T action = E_LOG_PER_DAY; int flush = 1; size_t limit_size = 0; E_LOG_SYNC_ACTION_T sync_action = E_LOG_SEM_WITH_MT; char *sem_name = NULL; char *ptr, *pname; ACL_ARGV *env_argv; ACL_VSTRING *log_buf; int i; if (filename == NULL || *filename == 0) return (-1); acl_snprintf(h_log->filename, sizeof(h_log->filename), "%s", filename); /* env: facility:x, priority:x, action:x, flush:x, limit_size:x, sync_action:x, sem_name:x */ ptr = getenv("SERVICE_ENV"); if (ptr == NULL) return (-1); env_argv = acl_argv_split(ptr, ",\t "); if (env_argv == NULL) return (-1); if (env_argv->argc == 0) { acl_argv_free(env_argv); return (-1); } log_buf = acl_vstring_alloc(256); for (i = 0; i < env_argv->argc; i++) { pname = acl_argv_index(env_argv, i); ptr = strchr(pname, ':'); if (ptr == NULL) continue; *ptr++ = 0; if (*ptr == 0) continue; if (i == 0) acl_vstring_sprintf(log_buf, "%s:%s", pname, ptr); else acl_vstring_sprintf_append(log_buf, ", %s:%s", pname, ptr); if (strcasecmp(pname, "logme") == 0) { if (strcasecmp(ptr, "TRUE") == 0) logme = 1; } else if (strcasecmp(pname, "facility") == 0) { facility_name = ptr; } else if (strcasecmp(pname, "priority") == 0) { if (strcasecmp(ptr, "E_LOG_NOLOG") == 0) priority = E_LOG_NOLOG; else if (strcasecmp(ptr, "E_LOG_EMERG") == 0) priority = E_LOG_EMERG; else if (strcasecmp(ptr, "E_LOG_ALERT") == 0) priority = E_LOG_ALERT; else if (strcasecmp(ptr, "E_LOG_CRIT") == 0) priority = E_LOG_CRIT; else if (strcasecmp(ptr, "E_LOG_ERR") == 0) priority = E_LOG_ERR; else if (strcasecmp(ptr, "E_LOG_WARNING") == 0) priority = E_LOG_WARNING; else if (strcasecmp(ptr, "E_LOG_NOTICE") == 0) priority = E_LOG_NOTICE; else if (strcasecmp(ptr, "E_LOG_INFO") == 0) priority = E_LOG_INFO; else if (strcasecmp(ptr, "E_LOG_DEBUG") == 0) priority = E_LOG_DEBUG; } else if (strcasecmp(pname, "action") == 0) { if (strcasecmp(ptr, "E_LOG_PER_HOUR") == 0) action = E_LOG_PER_HOUR; else if (strcasecmp(ptr, "E_LOG_PER_DAY") == 0) action = E_LOG_PER_DAY; else if (strcasecmp(ptr, "E_LOG_PER_WEEK") == 0) action = E_LOG_PER_WEEK; else if (strcasecmp(ptr, "E_LOG_PER_MONTH") == 0) action = E_LOG_PER_MONTH; else if (strcasecmp(ptr, "E_LOG_PER_YEAR") == 0) action = E_LOG_PER_YEAR; else if (strcasecmp(ptr, "E_LOG_LIMIT_SIZE") == 0) action = E_LOG_LIMIT_SIZE; else if (strcasecmp(ptr, "E_LOG_SYSLOG") == 0) action = E_LOG_SYSLOG; } else if (strcasecmp(pname, "flush") == 0) { if (strcasecmp(ptr, "sync_flush") == 0) flush = 1; else if (strcasecmp(ptr, "async_flush") == 0) flush = 0; } else if (strcasecmp(pname, "limit_size") == 0) { limit_size = atoi(ptr); } else if (strcasecmp(pname, "sync_action") == 0) { if (strcasecmp(ptr, "E_LOG_NO_SYNC") == 0) sync_action = E_LOG_NO_SYNC; else if (strcasecmp(ptr, "E_LOG_THREAD_MUTEX") == 0) sync_action = E_LOG_THREAD_MUTEX; else if (strcasecmp(ptr, "E_LOG_FILE_LOCK") == 0) sync_action = E_LOG_FILE_LOCK; else if (strcasecmp(ptr, "E_LOG_SEM_WITH_MT") == 0) sync_action = E_LOG_SEM_WITH_MT; else if (strcasecmp(ptr, "E_LOG_FILE_APPEND_WITH_MT") == 0) sync_action = E_LOG_FILE_APPEND_WITH_MT; } else if (strcasecmp(pname, "sem_name") == 0) { sem_name = ptr; } } #if 0 LC_SysLogCreate(&h_log->h_log, h_log->filename); #endif if (action == E_LOG_LIMIT_SIZE) { if (limit_size == 0) limit_size = 512; /* set default size: 512 MB */ } else limit_size = 0; if (sync_action == E_LOG_SEM_WITH_MT) { if (sem_name == NULL || *sem_name == 0) { sem_name = acl_concatenate("/tmp/", acl_safe_basename(filename), ".sem", NULL); } else sem_name = acl_mystrdup(sem_name); } else if (sem_name) { sem_name = NULL; } h_log->h_log = e_log_new2(h_log->filename, priority, action, flush, limit_size, facility_name, sync_action, sem_name); if (sem_name) acl_myfree(sem_name); if (logme) { /* char cmd[1024], buf[512]; snprintf(buf, sizeof(buf), "filename=%s, priority=%d, action=%d, flush=%d, " "limit_size=%d, facility_name=%s, sync_action=%d, sem_name=%s", h_log->filename, priority, action, flush, limit_size, facility_name, sync_action, sem_name); snprintf(cmd, sizeof(cmd), "echo '%s, buf(%s)' >> /tmp/test1.log", acl_vstring_str(log_buf), buf); system(cmd); */ e_log2(h_log->h_log, "master_env: %s", acl_vstring_str(log_buf)); } e_log2(h_log->h_log, "filename=%s, priority=%d, action=%d, flush=%d, " "limit_size=%d, facility_name=%s, sync_action=%d, sem_name=%s", h_log->filename, priority, action, flush, limit_size, facility_name, sync_action, sem_name); if (log_buf) acl_vstring_free(log_buf); return (0); }