Formatted maxadmin.c

Formatted maxadmin.c according to the style guide.
This commit is contained in:
Markus Makela
2016-01-21 19:41:32 +02:00
parent 608924beba
commit cceeb2d234

View File

@ -73,6 +73,7 @@ static void PrintVersion(const char *progname);
static void read_inifile(char **hostname, char **port, char **user, char **passwd, int*);
#ifdef HISTORY
static char *
prompt(EditLine *el __attribute__((__unused__)))
{
@ -82,7 +83,8 @@ prompt(EditLine *el __attribute__((__unused__)))
}
#endif
static struct option long_options[] = {
static struct option long_options[] =
{
{"host", required_argument, 0, 'h'},
{"user", required_argument, 0, 'u'},
{"password", required_argument, 0, 'p'},
@ -127,28 +129,34 @@ char c;
read_inifile(&hostname, &port, &user, &passwd, &use_emacs);
while ((c = getopt_long(argc, argv, "h:p:P:u:v?e",
long_options, &option_index))
>= 0)
long_options, &option_index)) >= 0)
{
switch (c)
{
switch (c) {
case 'h':
hostname = strdup(optarg);
break;
case 'p':
passwd = strdup(optarg);
break;
case 'P':
port = strdup(optarg);
break;
case 'u':
user = strdup(optarg);
break;
case 'v':
PrintVersion(*argv);
exit(EXIT_SUCCESS);
case 'e':
use_emacs = 1;
break;
case '?':
DoUsage(*argv);
exit(optopt ? EXIT_FAILURE : EXIT_SUCCESS);
@ -161,30 +169,45 @@ char c;
tcflag_t c_lflag;
if (tcgetattr(STDIN_FILENO, &tty_attr) < 0)
{
return -1;
}
c_lflag = tty_attr.c_lflag;
tty_attr.c_lflag &= ~ICANON;
tty_attr.c_lflag &= ~ECHO;
if (tcsetattr(STDIN_FILENO, 0, &tty_attr) < 0)
{
return -1;
}
printf("Password: ");
passwd = malloc(80);
fgets(passwd, 80, stdin);
tty_attr.c_lflag = c_lflag;
if (tcsetattr(STDIN_FILENO, 0, &tty_attr) < 0)
{
return -1;
}
i = strlen(passwd);
if (i > 1)
{
passwd[i - 1] = '\0';
}
printf("\n");
}
if ((so = connectMaxScale(hostname, port)) == -1)
{
exit(1);
}
if (!authMaxScale(so, user, passwd))
{
fprintf(stderr, "Failed to connect to MaxScale. "
@ -192,11 +215,13 @@ char c;
exit(1);
}
if (optind < argc) {
if (optind < argc)
{
int i, len = 0;
char *cmd;
for (i = optind; i < argc; i++) {
for (i = optind; i < argc; i++)
{
len += strlen(argv[i]) + 1;
}
@ -215,13 +240,19 @@ char c;
strcat(cmd, "\"");
}
else
{
strcat(cmd, argv[i]);
}
}
if (access(cmd, R_OK) == 0)
{
DoSource(so, cmd);
}
else
{
sendCommand(so, cmd);
}
free(cmd);
exit(0);
@ -239,9 +270,13 @@ char c;
el = el_init(*argv, stdin, stdout, stderr);
if (use_emacs)
{
el_set(el, EL_EDITOR, emacs); /** Editor is emacs */
}
else
{
el_set(el, EL_EDITOR, vi); /* Default editor is vi */
}
el_set(el, EL_SIGNAL, 1); /* Handle signals gracefully */
el_set(el, EL_PROMPT, prompt); /* Set the prompt function */
@ -269,7 +304,9 @@ char c;
#endif
/* Strip trailing \n\r */
for (i = num - 1; buf[i] == '\r' || buf[i] == '\n'; i--)
{
buf[i] = 0;
}
#ifdef HISTORY
el_line(el);
@ -285,8 +322,10 @@ char c;
#ifdef HISTORY
for (rv = history(hist, &ev, H_LAST); rv != -1;
rv = history(hist, &ev, H_PREV))
{
fprintf(stdout, "%4d %s\n",
ev.num, ev.str);
}
#else
fprintf(stderr, "History not supported in this version.\n");
#endif
@ -298,7 +337,9 @@ char c;
/* Find the filename */
ptr = &buf[strlen("source")];
while (*ptr && isspace(*ptr))
{
ptr++;
}
DoSource(so, ptr);
}
@ -345,6 +386,7 @@ int keepalive = 1;
addr.sin_family = AF_INET;
setipaddress(&addr.sin_addr, hostname);
addr.sin_port = htons(atoi(port));
if (connect(so, (struct sockaddr *) &addr, sizeof(addr)) < 0)
{
char errbuf[STRERROR_BUFLEN];
@ -353,14 +395,15 @@ int keepalive = 1;
close(so);
return -1;
}
if (setsockopt(so, SOL_SOCKET,
SO_KEEPALIVE, &keepalive , sizeof(keepalive )))
if (setsockopt(so, SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive)))
{
perror("setsockopt");
}
return so;
}
/**
* Set IP address in socket structure in_addr
*
@ -381,12 +424,14 @@ setipaddress(struct in_addr *a, char *p)
hint.ai_flags = AI_CANONNAME;
hint.ai_family = AF_INET;
if ((rc = getaddrinfo(p, NULL, &hint, &ai)) != 0) {
if ((rc = getaddrinfo(p, NULL, &hint, &ai)) != 0)
{
return 0;
}
/* take the first one */
if (ai != NULL) {
if (ai != NULL)
{
res_addr = (struct sockaddr_in *) (ai->ai_addr);
memcpy(a, &res_addr->sin_addr, sizeof(struct in_addr));
@ -401,11 +446,15 @@ setipaddress(struct in_addr *a, char *p)
h = gethostbyname(p);
spinlock_release(&tmplock);
if (h == NULL) {
if ((a->s_addr = inet_addr(p)) == -1) {
if (h == NULL)
{
if ((a->s_addr = inet_addr(p)) == -1)
{
return 0;
}
} else {
}
else
{
/* take the first one */
memcpy(a, h->h_addr, h->h_length);
@ -429,13 +478,23 @@ authMaxScale(int so, char *user, char *password)
char buf[20];
if (read(so, buf, 4) != 4)
{
return 0;
}
write(so, user, strlen(user));
if (read(so, buf, 8) != 8)
{
return 0;
}
write(so, password, strlen(password));
if (read(so, buf, 6) != 6)
{
return 0;
}
return strncmp(buf, "FAILED", 6);
}
@ -457,15 +516,23 @@ char buf[80];
int i, j, newline = 1;
if (write(so, cmd, strlen(cmd)) == -1)
{
return 0;
}
while (1)
{
if ((i = read(so, buf, 80)) <= 0)
{
return 0;
}
for (j = 0; j < i; j++)
{
if (newline == 1 && buf[j] == 'O')
{
newline = 2;
}
else if ((newline == 2 && buf[j] == 'K' && j == i - 1) ||
(j == i - 2 && buf[j] == 'O' && buf[j + 1] == 'K'))
{
@ -551,7 +618,8 @@ DoUsage(const char *progname)
{
PrintVersion(progname);
printf("The MaxScale administrative and monitor client.\n\n");
printf("Usage: %s [-u user] [-p password] [-h hostname] [-P port] [<command file> | <command>]\n\n", progname);
printf("Usage: %s [-u user] [-p password] [-h hostname] [-P port] "
"[<command file> | <command>]\n\n", progname);
printf(" -u|--user=... The user name to use for the connection, default\n");
printf(" is admin.\n");
printf(" -p|--password=... The user password, if not given the password will\n");
@ -578,11 +646,20 @@ isquit(char *buf)
char *ptr = buf;
if (!buf)
{
return 0;
}
while (*ptr && isspace(*ptr))
{
ptr++;
}
if (strncasecmp(ptr, "quit", 4) == 0 || strncasecmp(ptr, "exit", 4) == 0)
{
return 1;
}
return 0;
}
@ -597,10 +674,15 @@ rtrim(char *str)
char *ptr = str + strlen(str);
if (ptr > str) // step back from the terminating null
{
ptr--; // If the string has more characters
}
while (ptr >= str && isspace(*ptr))
{
*ptr-- = 0;
}
}
/**
* Read defaults for hostname, port, user and password from
@ -621,40 +703,62 @@ FILE *fp;
char line[400];
if ((home = getenv("HOME")) == NULL)
{
return;
snprintf(pathname, 400, "%s/.maxadmin", home);
}
snprintf(pathname, sizeof(pathname), "%s/.maxadmin", home);
if ((fp = fopen(pathname, "r")) == NULL)
{
return;
while (fgets(line, 400, fp) != NULL)
}
while (fgets(line, sizeof(line), fp) != NULL)
{
rtrim(line);
if (line[0] == 0)
continue;
if (line[0] == '#')
if (line[0] == 0 || line[0] == '#')
{
continue;
}
name = strtok_r(line, "=", &brkt);
value = strtok_r(NULL, "=", &brkt);
if (name && value)
{
if (strcmp(name, "hostname") == 0)
{
*hostname = strdup(value);
}
else if (strcmp(name, "port") == 0)
{
*port = strdup(value);
}
else if (strcmp(name, "user") == 0)
{
*user = strdup(value);
}
else if (strcmp(name, "passwd") == 0)
{
*passwd = strdup(value);
}
else if (strcmp(name, "editor") == 0)
{
if (strcmp(value, "vi") == 0)
{
*editor = 0;
}
else if (strcmp(value, "emacs") == 0)
{
*editor = 1;
}
else
{
fprintf(stderr, "WARNING: Unrecognised "
"parameter '%s=%s' in .maxadmin file\n", name, value);
}
}
else
{
fprintf(stderr, "WARNING: Unrecognised "