*/
/*
- Copyright (C) 2000-2003 Kern Sibbald and John Walker
+ Copyright (C) 2000-2004 Kern Sibbald and John Walker
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
#define clrbrk()
#define usrbrk() 0
#endif
+
+#ifdef HAVE_WIN32
+#include <windows.h>
+#define isatty(fd) (fd==0)
+DWORD g_platform_id = VER_PLATFORM_WIN32_WINDOWS;
+#endif
/* Exported variables */
#endif
/* Imported functions */
-int authenticate_director(JCR *jcr, DIRRES *director, char *name);
+int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons);
}
if (tty_input) {
stat = get_cmd(input, prompt, UA_sock, 30);
- clrbrk();
+ if (usrbrk() == 1) {
+ clrbrk();
+ }
+ if (usrbrk()) {
+ break;
+ }
} else {
+ /* Reading input from a file */
int len = sizeof_pool_memory(UA_sock->msg) - 1;
- if (fgets(UA_sock->msg, len, input) == NULL || usrbrk()) {
+ if (usrbrk()) {
+ break;
+ }
+ if (fgets(UA_sock->msg, len, input) == NULL) {
stat = -1;
} else {
sendit(UA_sock->msg); /* echo to terminal */
sendit(UA_sock->msg);
}
}
+ if (usrbrk() > 1) {
+ break;
+ } else {
+ clrbrk();
+ }
if (!stop) {
fflush(stdout);
}
init_stack_dump();
my_name_is(argc, argv, "bconsole");
- textdomain("bacula-console");
+ textdomain("bacula");
init_msg(NULL, NULL);
working_directory = "/tmp";
args = get_pool_memory(PM_FNAME);
init_signals(terminate_console);
}
+#if !defined(HAVE_WIN32)
/* Override Bacula default signals */
signal(SIGCHLD, SIG_IGN);
+ signal(SIGQUIT, SIG_IGN);
signal(SIGTSTP, got_sigstop);
signal(SIGCONT, got_sigcontinue);
signal(SIGTTIN, got_sigtin);
signal(SIGTTOU, got_sigtout);
trapctlc();
+#endif
if (argc) {
usage();
memset(&jcr, 0, sizeof(jcr));
+#ifdef HAVE_WIN32
+ WSA_Init(); /* Initialize Windows sockets */
+#endif
+
if (ndir > 1) {
struct sockaddr_in client_addr;
memset(&client_addr, 0, sizeof(client_addr));
LockRes();
CONRES *cons = (CONRES *)GetNextRes(R_CONSOLE, (RES *)NULL);
UnlockRes();
- char *con_name;
- if (cons) {
- con_name = cons->hdr.name;
- } else {
- con_name = "*UserAgent*";
- }
- if (!authenticate_director(&jcr, dir, con_name)) {
+ /* If cons==NULL, default console will be used */
+ if (!authenticate_director(&jcr, dir, cons)) {
fprintf(stderr, "ERR=%s", UA_sock->msg);
terminate_console(0);
return 1;
{
fd_set fdset;
struct timeval tv;
+#ifdef HAVE_WIN32
+ return 1; /* select doesn't seem to work on Win32 */
+#endif
tv.tv_sec = sec;
tv.tv_usec = 0;
}
break;
}
+ if (usrbrk()) {
+ clrbrk();
+ }
strip_trailing_junk(sock->msg);
sock->msglen = strlen(sock->msg);
return 1;
if (tee) {
fputs(buf, stdout);
}
- fflush(stdout);
+ if (output == stdout || tee) {
+ fflush(stdout);
+ }
#endif
}