static int np_ssize_t(char *p, PyObject *v, const formatdef *f) { Py_ssize_t x; if (get_ssize_t(v, &x) < 0) return -1; memcpy(p, (char *)&x, sizeof x); return 0; }
static int conf_set_from_global(struct conf **globalc, struct conf **cc) { int i=0; for(i=0; i<OPT_MAX; i++) { if(!(cc[i]->flags & CONF_FLAG_CC_OVERRIDE)) continue; switch(cc[i]->conf_type) { case CT_STRING: set_string(cc[i], get_string(globalc[i])); break; case CT_UINT: set_int(cc[i], get_int(globalc[i])); break; case CT_FLOAT: set_float(cc[i], get_float(globalc[i])); break; case CT_MODE_T: set_mode_t(cc[i], get_mode_t(globalc[i])); break; case CT_SSIZE_T: set_ssize_t(cc[i], get_ssize_t(globalc[i])); break; case CT_E_BURP_MODE: set_e_burp_mode(cc[i], get_e_burp_mode(globalc[i])); break; case CT_E_PROTOCOL: set_e_protocol(cc[i], get_e_protocol(globalc[i])); break; case CT_E_RECOVERY_METHOD: set_e_recovery_method(cc[i], get_e_recovery_method(globalc[i])); break; case CT_E_RSHASH: set_e_rshash(cc[i], get_e_rshash(globalc[i])); break; case CT_STRLIST: // Done later. break; case CT_CNTR: break; // No default so that there are warnings if anything // was missed. } } // If ssl_peer_cn is not set, default it to the client name. if(!get_string(globalc[OPT_SSL_PEER_CN]) && set_string(cc[OPT_SSL_PEER_CN], get_string(cc[OPT_CNAME]))) return -1; return 0; }
static void check_default(struct conf **c, enum conf_opt o) { switch(o) { case OPT_BURP_MODE: fail_unless(get_e_burp_mode(c[o])==BURP_MODE_UNSET); break; case OPT_LOCKFILE: case OPT_PIDFILE: case OPT_ADDRESS: case OPT_PORT: case OPT_STATUS_ADDRESS: case OPT_STATUS_PORT: case OPT_SSL_CERT_CA: case OPT_SSL_CERT: case OPT_SSL_KEY: case OPT_SSL_KEY_PASSWORD: case OPT_SSL_PEER_CN: case OPT_SSL_CIPHERS: case OPT_SSL_DHFILE: case OPT_CA_CONF: case OPT_CA_NAME: case OPT_CA_SERVER_NAME: case OPT_CA_BURP_CA: case OPT_CA_CSR_DIR: case OPT_PEER_VERSION: case OPT_CLIENT_LOCKDIR: case OPT_MONITOR_LOGFILE: case OPT_CNAME: case OPT_PASSWORD: case OPT_PASSWD: case OPT_SERVER: case OPT_ENCRYPTION_PASSWORD: case OPT_AUTOUPGRADE_OS: case OPT_AUTOUPGRADE_DIR: case OPT_BACKUP: case OPT_BACKUP2: case OPT_RESTOREPREFIX: case OPT_RESTORE_SPOOL: case OPT_BROWSEFILE: case OPT_BROWSEDIR: case OPT_B_SCRIPT_PRE: case OPT_B_SCRIPT_POST: case OPT_R_SCRIPT_PRE: case OPT_R_SCRIPT_POST: case OPT_B_SCRIPT: case OPT_R_SCRIPT: case OPT_RESTORE_PATH: case OPT_ORIG_CLIENT: case OPT_CONFFILE: case OPT_USER: case OPT_GROUP: case OPT_DIRECTORY: case OPT_TIMESTAMP_FORMAT: case OPT_CLIENTCONFDIR: case OPT_S_SCRIPT_PRE: case OPT_S_SCRIPT_POST: case OPT_MANUAL_DELETE: case OPT_S_SCRIPT: case OPT_TIMER_SCRIPT: case OPT_N_SUCCESS_SCRIPT: case OPT_N_FAILURE_SCRIPT: case OPT_DEDUP_GROUP: case OPT_VSS_DRIVES: case OPT_REGEX: case OPT_RESTORE_CLIENT: fail_unless(get_string(c[o])==NULL); break; case OPT_RATELIMIT: fail_unless(get_float(c[o])==0); break; case OPT_CLIENT_IS_WINDOWS: case OPT_RANDOMISE: case OPT_B_SCRIPT_POST_RUN_ON_FAIL: case OPT_R_SCRIPT_POST_RUN_ON_FAIL: case OPT_SEND_CLIENT_CNTR: case OPT_BREAKPOINT: case OPT_SYSLOG: case OPT_PROGRESS_COUNTER: case OPT_MONITOR_BROWSE_CACHE: case OPT_S_SCRIPT_PRE_NOTIFY: case OPT_S_SCRIPT_POST_RUN_ON_FAIL: case OPT_S_SCRIPT_POST_NOTIFY: case OPT_S_SCRIPT_NOTIFY: case OPT_HARDLINKED_ARCHIVE: case OPT_N_SUCCESS_WARNINGS_ONLY: case OPT_N_SUCCESS_CHANGES_ONLY: case OPT_CROSS_ALL_FILESYSTEMS: case OPT_READ_ALL_FIFOS: case OPT_READ_ALL_BLOCKDEVS: case OPT_SPLIT_VSS: case OPT_STRIP_VSS: case OPT_ATIME: case OPT_SCAN_PROBLEM_RAISES_ERROR: case OPT_OVERWRITE: case OPT_STRIP: fail_unless(get_int(c[o])==0); break; case OPT_DAEMON: case OPT_STDOUT: case OPT_FORK: case OPT_DIRECTORY_TREE: case OPT_PASSWORD_CHECK: case OPT_LIBRSYNC: case OPT_VERSION_WARN: case OPT_PATH_LENGTH_WARN: case OPT_CLIENT_CAN_DELETE: case OPT_CLIENT_CAN_DIFF: case OPT_CLIENT_CAN_FORCE_BACKUP: case OPT_CLIENT_CAN_LIST: case OPT_CLIENT_CAN_RESTORE: case OPT_CLIENT_CAN_VERIFY: case OPT_SERVER_CAN_RESTORE: fail_unless(get_int(c[o])==1); break; case OPT_NETWORK_TIMEOUT: fail_unless(get_int(c[o])==60*60*2); break; case OPT_SSL_COMPRESSION: case OPT_MAX_CHILDREN: case OPT_MAX_STATUS_CHILDREN: fail_unless(get_int(c[o])==5); break; case OPT_COMPRESSION: fail_unless(get_int(c[o])==9); break; case OPT_MAX_STORAGE_SUBDIRS: fail_unless(get_int(c[o])==30000); break; case OPT_MAX_HARDLINKS: fail_unless(get_int(c[o])==10000); break; case OPT_UMASK: fail_unless(get_mode_t(c[o])==0022); break; case OPT_STARTDIR: case OPT_B_SCRIPT_PRE_ARG: case OPT_B_SCRIPT_POST_ARG: case OPT_R_SCRIPT_PRE_ARG: case OPT_R_SCRIPT_POST_ARG: case OPT_B_SCRIPT_ARG: case OPT_R_SCRIPT_ARG: case OPT_S_SCRIPT_PRE_ARG: case OPT_S_SCRIPT_POST_ARG: case OPT_S_SCRIPT_ARG: case OPT_TIMER_ARG: case OPT_N_SUCCESS_ARG: case OPT_N_FAILURE_ARG: case OPT_RESTORE_CLIENTS: case OPT_KEEP: case OPT_INCEXCDIR: case OPT_INCLUDE: case OPT_EXCLUDE: case OPT_FSCHGDIR: case OPT_NOBACKUP: case OPT_INCEXT: case OPT_EXCEXT: case OPT_INCREG: case OPT_EXCREG: case OPT_EXCFS: case OPT_EXCOM: case OPT_INCGLOB: case OPT_FIFOS: case OPT_BLOCKDEVS: fail_unless(get_strlist(c[o])==NULL); break; case OPT_PROTOCOL: fail_unless(get_e_protocol(c[o])==PROTO_AUTO); break; case OPT_HARD_QUOTA: case OPT_SOFT_QUOTA: case OPT_MIN_FILE_SIZE: case OPT_MAX_FILE_SIZE: fail_unless(get_ssize_t(c[o])==0); break; case OPT_WORKING_DIR_RECOVERY_METHOD: fail_unless(get_e_recovery_method(c[o])== RECOVERY_METHOD_DELETE); break; case OPT_CNTR: fail_unless(get_cntr(c[o])==NULL); break; case OPT_MAX: break; // No default, so we get compiler warnings if something was // missed. } }