Ejemplo n.º 1
0
static int
offline(void)
{
/* offline mode */
	char *line = NULL;
	size_t llen = 0UL;
	ssize_t nrd;
	cnt_t *m;
	size_t nm;

	/* estimate */
	if (trnd.u != UNIT_SECS) {
	nimpl:
		errno = 0, serror("not implemented");
		return -1;
	}

	switch (intv.u) {
	case UNIT_DAYS:
		intv.t *= 24U * 60U * 60U;
		intv.u = UNIT_SECS;
	case UNIT_SECS:
		break;
	default:
		goto nimpl;
	}

	nm = intv.t / trnd.t;
	if (UNLIKELY((m = calloc(nm, sizeof(*m))) == NULL)) {
		return -1;
	}
	while ((nrd = getline(&line, &llen, stdin)) > 0) {
		tv_t t;

		if (UNLIKELY((t = strtotv(line, NULL)) == NATV)) {
			/* got metronome c**k-up */
			continue;
		}
		/* round to seconds */
		t /= NSECS;
		/* move to monday */
		t -= 4U * 24U * 60U * 60U;
		/* align ... */
		t %= intv.t;
		/* ... and round */
		t /= trnd.t;
		/* count */
		m[t]++;
	}

	for (size_t i = 0U; i < nm; i++) {
		printf("%zu\t%zu\n", i, m[i]);
	}

	/* finalise our findings */
	free(line);
	/* and finalise the counter array */
	free(m);
	return 0;
}
Ejemplo n.º 2
0
t_addr pdq3_parse_addr (DEVICE *dptr, const char *cptr, const char **tptr)
{
  t_addr seg, off;
  if (cptr[0] == '#') {
    off = strtotv(cptr+1, tptr, dptr->aradix);
    return MAKE_BADDR(reg_segb,off);
  } else if (cptr[0] == '$') {
    off = strtotv(cptr+1, tptr, dptr->aradix);
    return MAKE_WADDR(off);
  } else {
    char gbuf[CBUFSIZE];
    get_glyph (cptr, gbuf, 0);
    if (!strncmp(gbuf,"SEGB",4)) {
      seg = reg_segb; *tptr = cptr+4;
    } else 
      seg = strtotv(cptr, tptr, dptr->aradix);
    if (*tptr[0] == ':') {
      cptr = *tptr + 1;
      off = strtotv(cptr, tptr, dptr->aradix);
      return MAKE_BADDR(seg,off);
    } else 
      return MAKE_WADDR(seg);
  }
}
Ejemplo n.º 3
0
Archivo: mid.c Proyecto: hroptatyr/ttt
static int
push_beef(char *ln, size_t UNUSED(lz))
{
	char *on;

	/* metronome is up first */
	if (UNLIKELY(strtotv(ln, &on) == NATV)) {
		return -1;
	}

	/* instrument name, don't hash him */
	if (UNLIKELY((on = strchr(++on, '\t')) == NULL)) {
		return -1;
	}
	beg = ++on - ln;

	/* snarf quotes */
	with (const char *str = on) {
		q.b = strtopx(str, &on);
		q.b = on > str ? q.b : NANPX;
	}