static Backend *back;
static void *backhandle;
+static Config cfg;
static void source(char *src);
static void rsource(char *src);
static void tell_user(FILE * stream, char *fmt, ...)
{
- char str[0x100]; /* Make the size big enough */
+ char *str, *str2;
va_list ap;
va_start(ap, fmt);
- vsprintf(str, fmt, ap);
+ str = dupvprintf(fmt, ap);
va_end(ap);
- strcat(str, "\n");
- tell_str(stream, str);
+ str2 = dupcat(str, "\n", NULL);
+ sfree(str);
+ tell_str(stream, str2);
+ sfree(str2);
}
static void gui_update_stats(char *name, unsigned long size,
*/
void fatalbox(char *fmt, ...)
{
- char str[0x100]; /* Make the size big enough */
+ char *str, *str2;
va_list ap;
va_start(ap, fmt);
- strcpy(str, "Fatal: ");
- vsprintf(str + strlen(str), fmt, ap);
+ str = dupvprintf(fmt, ap);
+ str2 = dupcat("Fatal: ", str, "\n", NULL);
+ sfree(str);
va_end(ap);
- strcat(str, "\n");
- tell_str(stderr, str);
+ tell_str(stderr, str2);
+ sfree(str2);
errs++;
if (gui_mode) {
}
void modalfatalbox(char *fmt, ...)
{
- char str[0x100]; /* Make the size big enough */
+ char *str, *str2;
va_list ap;
va_start(ap, fmt);
- strcpy(str, "Fatal: ");
- vsprintf(str + strlen(str), fmt, ap);
+ str = dupvprintf(fmt, ap);
+ str2 = dupcat("Fatal: ", str, "\n", NULL);
+ sfree(str);
va_end(ap);
- strcat(str, "\n");
- tell_str(stderr, str);
+ tell_str(stderr, str2);
+ sfree(str2);
errs++;
if (gui_mode) {
}
void connection_fatal(void *frontend, char *fmt, ...)
{
- char str[0x100]; /* Make the size big enough */
+ char *str, *str2;
va_list ap;
va_start(ap, fmt);
- strcpy(str, "Fatal: ");
- vsprintf(str + strlen(str), fmt, ap);
+ str = dupvprintf(fmt, ap);
+ str2 = dupcat("Fatal: ", str, "\n", NULL);
+ sfree(str);
va_end(ap);
- strcat(str, "\n");
- tell_str(stderr, str);
+ tell_str(stderr, str2);
+ sfree(str2);
errs++;
if (gui_mode) {
*/
static void bump(char *fmt, ...)
{
- char str[0x100]; /* Make the size big enough */
+ char *str, *str2;
va_list ap;
va_start(ap, fmt);
- strcpy(str, "Fatal: ");
- vsprintf(str + strlen(str), fmt, ap);
+ str = dupvprintf(fmt, ap);
va_end(ap);
- strcat(str, "\n");
- tell_str(stderr, str);
+ str2 = dupcat(str, "\n", NULL);
+ sfree(str);
+ tell_str(stderr, str2);
+ sfree(str2);
errs++;
if (back != NULL && back->socket(backhandle) != NULL) {
/*
* Enact command-line overrides.
*/
- cmdline_run_saved();
+ cmdline_run_saved(&cfg);
/*
* Trim leading whitespace off the hostname if it's there.
back = &ssh_backend;
- err = back->init(NULL, &backhandle, cfg.host, cfg.port, &realhost, 0);
+ err = back->init(NULL, &backhandle, &cfg, cfg.host, cfg.port, &realhost,0);
if (err != NULL)
bump("ssh_init: %s", err);
- logctx = log_init(NULL);
+ logctx = log_init(NULL, &cfg);
back->provide_logctx(backhandle, logctx);
+ console_provide_logctx(logctx);
ssh_scp_init();
if (verbose && realhost != NULL)
tell_user(stderr, "Connected to %s\n", realhost);
*/
static void run_err(const char *fmt, ...)
{
- char str[2048];
+ char *str, *str2;
va_list ap;
va_start(ap, fmt);
errs++;
- strcpy(str, "scp: ");
- vsprintf(str + strlen(str), fmt, ap);
- strcat(str, "\n");
- scp_send_errmsg(str);
- tell_user(stderr, "%s", str);
+ str = dupvprintf(fmt, ap);
+ str2 = dupcat("scp: ", str, "\n", NULL);
+ sfree(str);
+ scp_send_errmsg(str2);
+ tell_user(stderr, "%s", str2);
va_end(ap);
+ sfree(str2);
}
/*
FindClose(fh);
}
- cmd = smalloc(strlen(targ) + 100);
- sprintf(cmd, "scp%s%s%s%s -t %s",
- verbose ? " -v" : "",
- recursive ? " -r" : "",
- preserve ? " -p" : "",
- targetshouldbedirectory ? " -d" : "", targ);
+ cmd = dupprintf("scp%s%s%s%s -t %s",
+ verbose ? " -v" : "",
+ recursive ? " -r" : "",
+ preserve ? " -p" : "",
+ targetshouldbedirectory ? " -d" : "", targ);
do_cmd(host, user, cmd);
sfree(cmd);
user = NULL;
}
- cmd = smalloc(strlen(src) + 100);
- sprintf(cmd, "scp%s%s%s%s -f %s",
- verbose ? " -v" : "",
- recursive ? " -r" : "",
- preserve ? " -p" : "",
- targetshouldbedirectory ? " -d" : "", src);
+ cmd = dupprintf("scp%s%s%s%s -f %s",
+ verbose ? " -v" : "",
+ recursive ? " -r" : "",
+ preserve ? " -p" : "",
+ targetshouldbedirectory ? " -d" : "", src);
do_cmd(host, user, cmd);
sfree(cmd);
va_start(ap, p);
vfprintf(stderr, p, ap);
va_end(ap);
- fputc('\n', stderr);
+ fprintf(stderr, "\n try typing just \"pscp\" for help\n");
exit(1);
}
int ret;
if (argv[i][0] != '-')
break;
- ret = cmdline_process_param(argv[i], i+1<argc?argv[i+1]:NULL, 1);
+ ret = cmdline_process_param(argv[i], i+1<argc?argv[i+1]:NULL, 1, &cfg);
if (ret == -2) {
cmdline_error("option \"%s\" requires an argument", argv[i]);
} else if (ret == 2) {
} else if (strcmp(argv[i], "--") == 0) {
i++;
break;
- } else
- usage();
+ } else {
+ cmdline_error("unknown option \"%s\"", argv[i]);
+ }
}
argc -= i;
argv += i;