예제 #1
0
파일: measure.c 프로젝트: rlk/gigo
static bool proc(const char *dst, int l, int n, int m, int p, int op)
{
    bool ok = false;
    img *s;
    int  k;

    if ((n && m && p) || imgargs(dst, &n, &m, &p))
    {
        if ((s = imgopen(dst, l, n, m, p)))
        {
            for (k = 0; k < s->p; k++)
            {
                float v = 0.0f;

                switch (op)
                {
                    case 's': v = op_sum(s, k); break;
                    case 'x': v = op_cmin(s, k); break;
                    case 'X': v = op_cmax(s, k); break;
                    case '0': v = op_rmin(s, k); break;
                    case '1': v = op_rmax(s, k); break;
                }

                printf("%e\n", v);
            }
            imgclose(s);
            ok = true;
        }
    }
    else apperr("Failed to guess image parameters");
    return ok;
}
예제 #2
0
파일: client.c 프로젝트: mlazowik/array
int main(int argc, char *argv[]) {
    assert(argc == 2);

    op_time = strtol(argv[1], NULL, 10);

    assert(op_time >= 0);

    debug("Hello client! Got %ld.\n", op_time);

    control_queue = get_queue(CONTROL_KEY);
    clients_server_queue = get_queue(CLIENTS_SERVER_KEY);
    server_clients_queue = get_queue(SERVER_CLIENTS_KEY);

    pid = getpid();

    debug("My pid is %ld.\n", pid);

    Mesg msg;
    msg.mesg_type = pid;

    queue_send(control_queue, (char *) &msg);

    char buffer[500];
    while (fgets(buffer, sizeof buffer, stdin) != NULL) {
        char op;
        int n;
        const char *p = buffer;

        sscanf(p, "%c%n", &op, &n);
        p += n;

        switch (op) {
            case 'r': op_read(p); break;
            case 'w': op_write(p); break;
            case 's': op_sum(p); break;
            case 'x': op_swap(p); break;
        }
    }

    msg.op = QUIT;
    queue_send(clients_server_queue, (char *) &msg);

    return 0;
}