/** * Program entry point. Connect to a memcached server and use the binary * protocol to retrieve a given set of stats. * * @param argc argument count * @param argv argument vector * @return 0 if success, error code otherwise */ int main(int argc, char **argv) { int cmd; const char * const default_ports[] = { "memcache", "11211", NULL }; const char *port = NULL; const char *host = NULL; const char *user = NULL; const char *pass = NULL; char *ptr; /* Initialize the socket subsystem */ initialize_sockets(); while ((cmd = getopt(argc, argv, "h:p:u:P:")) != EOF) { switch (cmd) { case 'h' : host = optarg; ptr = strchr(optarg, ':'); if (ptr != NULL) { *ptr = '\0'; port = ptr + 1; } break; case 'p': port = optarg; break; case 'u' : user = optarg; break; case 'P': pass = optarg; break; default: fprintf(stderr, "Usage mcstat [-h host[:port]] [-p port] [-u user] [-p pass] [statkey]*\n"); return 1; } } if (host == NULL) { host = "localhost"; } int sock = -1; if (port == NULL) { int ii = 0; do { port = default_ports[ii++]; sock = connect_server(host, port, user, pass); } while (sock == -1 && default_ports[ii] != NULL); } else { sock = connect_server(host, port, user, pass); } if (sock == -1) { return 1; } if (optind == argc) { request_stat(sock, NULL); } else { for (int ii = optind; ii < argc; ++ii) { request_stat(sock, argv[ii]); } } close(sock); return 0; }
int main(int argc, char** argv) { int cmd; const char *port = "11210"; const char *host = "localhost"; const char *user = NULL; const char *pass = NULL; int secure = 0; char *ptr; SSL_CTX* ctx; BIO* bio; bool tcp_nodelay = false; /* Initialize the socket subsystem */ cb_initialize_sockets(); while ((cmd = getopt(argc, argv, "Th:p:u:P:s")) != EOF) { switch (cmd) { case 'T' : tcp_nodelay = true; break; case 'h' : host = optarg; ptr = strchr(optarg, ':'); if (ptr != NULL) { *ptr = '\0'; port = ptr + 1; } break; case 'p': port = optarg; break; case 'u' : user = optarg; break; case 'P': pass = optarg; break; case 's': secure = 1; break; default: fprintf(stderr, "Usage mcstat [-h host[:port]] [-p port] [-u user] [-P pass] [-s] [-T] [statkey]*\n"); return 1; } } if (create_ssl_connection(&ctx, &bio, host, port, user, pass, secure) != 0) { return 1; } if (tcp_nodelay && !enable_tcp_nodelay(bio)) { return 1; } if (optind == argc) { request_stat(bio, NULL); } else { int ii; for (ii = optind; ii < argc; ++ii) { request_stat(bio, argv[ii]); } } BIO_free_all(bio); if (secure) { SSL_CTX_free(ctx); } return EXIT_SUCCESS; }