static OSErr mac_opensessionfrom(FSSpec *fss) { FInfo fi; Session *s; void *sesshandle; OSErr err; s = snew(Session); memset(s, 0, sizeof(*s)); err = FSpGetFInfo(fss, &fi); if (err != noErr) return err; if (fi.fdFlags & kIsStationery) s->hasfile = FALSE; else { s->hasfile = TRUE; s->savefile = *fss; } sesshandle = open_settings_r_fsp(fss); if (sesshandle == NULL) { /* XXX need a way to pass up an error number */ err = -9999; goto fail; } load_open_settings(sesshandle, &s->cfg); close_settings_r(sesshandle); mac_startsession(s); return noErr; fail: sfree(s); return err; }
void load_settings(const char *section, Config * cfg, IStore* iStorage) { void *sesskey; IStore* storageInterface = iStorage ? iStorage : gStorage; sesskey = storageInterface->open_settings_r(section); load_open_settings(storageInterface, sesskey, cfg); storageInterface->close_settings_r(sesskey); #ifdef _WINDOWS WinRegStore::open_read_settings_s( "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "Desktop", cfg->default_log_path, sizeof(cfg->default_log_path)); #else strncpy(cfg->default_log_path, "~/", sizeof(cfg->default_log_path)); #endif if (!section || !*section) strncpy(cfg->session_name, DEFAULT_SESSION_NAME, sizeof cfg->session_name); else strncpy(cfg->session_name, section, sizeof cfg->session_name); if (cfg_launchable(cfg)) add_session_to_jumplist(section); }
void load_settings(char *section, int do_host, Config * cfg) { void *sesskey; sesskey = open_settings_r(section); load_open_settings(sesskey, do_host, cfg); close_settings_r(sesskey); }
void load_settings(char *section, Config * cfg) { void *sesskey; sesskey = open_settings_r(section); load_open_settings(sesskey, cfg); close_settings_r(sesskey); if (cfg_launchable(cfg)) add_session_to_jumplist(section); }
void load_settings(char *section, Config * cfg) { void *sesskey; sesskey = open_settings_r(section); load_open_settings(sesskey, cfg); #ifdef PERSOPORT if( section != NULL ) strcpy( cfg->sessionname, section ) ; else strcpy( cfg->sessionname, "" ) ; #endif close_settings_r(sesskey); }
int main(int argc, char **argv) { int *fdlist; int fd; int i, fdstate; size_t fdsize; unsigned long now; ssh_key **hostkeys = NULL; size_t nhostkeys = 0, hostkeysize = 0; RSAKey *hostkey1 = NULL; AuthPolicy ap; Conf *conf = conf_new(); load_open_settings(NULL, conf); ap.kbdint_state = 0; ap.ssh1keys = NULL; ap.ssh2keys = NULL; if (argc <= 1) { /* * We're going to terminate with an error message below, * because there are no host keys. But we'll display the help * as additional standard-error output, if nothing else so * that people see the giant safety warning. */ show_help(stderr); fputc('\n', stderr); } while (--argc > 0) { const char *arg = *++argv; const char *val; if (!strcmp(arg, "--help")) { show_help(stdout); exit(0); } else if (!strcmp(arg, "--version")) { show_version_and_exit(); } else if (!strcmp(arg, "--verbose") || !strcmp(arg, "-v")) { verbose = true; } else if (longoptarg(arg, "--hostkey", &val, &argc, &argv)) { Filename *keyfile; int keytype; const char *error; keyfile = filename_from_str(val); keytype = key_type(keyfile); if (keytype == SSH_KEYTYPE_SSH2) { ssh2_userkey *uk; ssh_key *key; uk = ssh2_load_userkey(keyfile, NULL, &error); filename_free(keyfile); if (!uk || !uk->key) { fprintf(stderr, "%s: unable to load host key '%s': " "%s\n", appname, val, error); exit(1); } char *invalid = ssh_key_invalid(uk->key, 0); if (invalid) { fprintf(stderr, "%s: host key '%s' is unusable: " "%s\n", appname, val, invalid); exit(1); } key = uk->key; sfree(uk->comment); sfree(uk); for (i = 0; i < nhostkeys; i++) if (ssh_key_alg(hostkeys[i]) == ssh_key_alg(key)) { fprintf(stderr, "%s: host key '%s' duplicates key " "type %s\n", appname, val, ssh_key_alg(key)->ssh_id); exit(1); } sgrowarray(hostkeys, hostkeysize, nhostkeys); hostkeys[nhostkeys++] = key; } else if (keytype == SSH_KEYTYPE_SSH1) { if (hostkey1) { fprintf(stderr, "%s: host key '%s' is a redundant " "SSH-1 host key\n", appname, val); exit(1); } hostkey1 = snew(RSAKey); if (!rsa_ssh1_loadkey(keyfile, hostkey1, NULL, &error)) { fprintf(stderr, "%s: unable to load host key '%s': " "%s\n", appname, val, error); exit(1); } } else { fprintf(stderr, "%s: '%s' is not loadable as a " "private key (%s)", appname, val, key_type_to_str(keytype)); exit(1); } } else if (longoptarg(arg, "--userkey", &val, &argc, &argv)) { Filename *keyfile; int keytype; const char *error; keyfile = filename_from_str(val); keytype = key_type(keyfile); if (keytype == SSH_KEYTYPE_SSH2_PUBLIC_RFC4716 || keytype == SSH_KEYTYPE_SSH2_PUBLIC_OPENSSH) { strbuf *sb = strbuf_new(); struct AuthPolicy_ssh2_pubkey *node; void *blob; if (!ssh2_userkey_loadpub(keyfile, NULL, BinarySink_UPCAST(sb), NULL, &error)) { fprintf(stderr, "%s: unable to load user key '%s': " "%s\n", appname, val, error); exit(1); } node = snew_plus(struct AuthPolicy_ssh2_pubkey, sb->len); blob = snew_plus_get_aux(node); memcpy(blob, sb->u, sb->len); node->public_blob = make_ptrlen(blob, sb->len); node->next = ap.ssh2keys; ap.ssh2keys = node; strbuf_free(sb); } else if (keytype == SSH_KEYTYPE_SSH1_PUBLIC) {