コード例 #1
0
ファイル: traffic.c プロジェクト: feelinglucky/routerlcd
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;
	}
}
コード例 #2
0
ファイル: sysinfo.c プロジェクト: feelinglucky/routerlcd
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;
}
コード例 #3
0
ファイル: imap-send.c プロジェクト: Fykec/git
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);
}
コード例 #4
0
ファイル: imap-send.c プロジェクト: Fykec/git
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;
	}
}
コード例 #5
0
ファイル: imap-send.c プロジェクト: Fykec/git
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;
}
コード例 #6
0
ファイル: traffic.c プロジェクト: feelinglucky/routerlcd
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;
}
コード例 #7
0
ファイル: sysinfo.c プロジェクト: feelinglucky/routerlcd
void show_time() {
	char tmp[10];
    sprintf(tmp, "%5s", get_cmd_result("date '+%H:%M'"));
    lcd_draw_string(0, 128 - 8 * strlen(tmp), tmp);
}