void get_traffic(char *dev, int traffic[]) { char cmd[100]; sprintf(cmd, "cat /proc/net/dev|grep \"%s\"", dev); char *line = get_cmd_result(cmd); int bytes = 0; int index = 0; while (*line != '\0') { if (*line != ' ') { bytes = 0; while (*line != '\0' && *line != ' ') { bytes = bytes * 10 + (*line)-'0'; ++line; } if (index == 1) { traffic[1] = bytes; } else if (index == 9) { traffic[0] = bytes; } index++; } ++line; } }
char* get_ip(char *dev) { char cmd[100]; static char result[20]; sprintf(cmd, "/sbin/ifconfig %s|grep \"inet \"|cut -d \":\" -f2|cut -d \" \" -f%s", dev, "1"); sprintf(result, "%s", get_cmd_result(cmd)); if (strlen(result) < 5) { sprintf(result, "N/A"); } return result; }
static int imap_exec(struct imap_store *ctx, struct imap_cmd_cb *cb, const char *fmt, ...) { va_list ap; struct imap_cmd *cmdp; va_start(ap, fmt); cmdp = issue_imap_cmd(ctx, cb, fmt, ap); va_end(ap); if (!cmdp) return RESP_BAD; return get_cmd_result(ctx, cmdp); }
static int imap_exec_m(struct imap_store *ctx, struct imap_cmd_cb *cb, const char *fmt, ...) { va_list ap; struct imap_cmd *cmdp; va_start(ap, fmt); cmdp = issue_imap_cmd(ctx, cb, fmt, ap); va_end(ap); if (!cmdp) return DRV_STORE_BAD; switch (get_cmd_result(ctx, cmdp)) { case RESP_BAD: return DRV_STORE_BAD; case RESP_NO: return DRV_MSG_BAD; default: return DRV_OK; } }
static struct imap_cmd *issue_imap_cmd(struct imap_store *ctx, struct imap_cmd_cb *cb, const char *fmt, va_list ap) { struct imap *imap = ctx->imap; struct imap_cmd *cmd; int n, bufl; char buf[1024]; cmd = xmalloc(sizeof(struct imap_cmd)); nfvasprintf(&cmd->cmd, fmt, ap); cmd->tag = ++imap->nexttag; if (cb) cmd->cb = *cb; else memset(&cmd->cb, 0, sizeof(cmd->cb)); while (imap->literal_pending) get_cmd_result(ctx, NULL); if (!cmd->cb.data) bufl = nfsnprintf(buf, sizeof(buf), "%d %s\r\n", cmd->tag, cmd->cmd); else bufl = nfsnprintf(buf, sizeof(buf), "%d %s{%d%s}\r\n", cmd->tag, cmd->cmd, cmd->cb.dlen, CAP(LITERALPLUS) ? "+" : ""); if (0 < verbosity) { if (imap->num_in_progress) printf("(%d in progress) ", imap->num_in_progress); if (!starts_with(cmd->cmd, "LOGIN")) printf(">>> %s", buf); else printf(">>> %d LOGIN <user> <pass>\n", cmd->tag); } if (socket_write(&imap->buf.sock, buf, bufl) != bufl) { free(cmd->cmd); free(cmd); if (cb) free(cb->data); return NULL; } if (cmd->cb.data) { if (CAP(LITERALPLUS)) { n = socket_write(&imap->buf.sock, cmd->cb.data, cmd->cb.dlen); free(cmd->cb.data); if (n != cmd->cb.dlen || socket_write(&imap->buf.sock, "\r\n", 2) != 2) { free(cmd->cmd); free(cmd); return NULL; } cmd->cb.data = NULL; } else imap->literal_pending = 1; } else if (cmd->cb.cont) imap->literal_pending = 1; cmd->next = NULL; *imap->in_progress_append = cmd; imap->in_progress_append = &cmd->next; imap->num_in_progress++; return cmd; }
int is_link_down(char *dev) { char cmd[100]; sprintf(cmd, "/sbin/ifconfig %s 2>/dev/null | grep \"Link encap\"", dev); char *ret = get_cmd_result(cmd); return ret[0] == 0 ? 1 : 0; }
void show_time() { char tmp[10]; sprintf(tmp, "%5s", get_cmd_result("date '+%H:%M'")); lcd_draw_string(0, 128 - 8 * strlen(tmp), tmp); }