#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <err.h>
#include "../lpi.h"

void usage(const char *progname);

int
main(int argc, char *argv[])
{
    long pid;
    int numSigs;
    int sig, sig2;
    int j;

    if (argc < 4 || strcmp(argv[1], "--help") == 0)
        usage(argv[0]);

    if ((errno = toLong(argv[1], &pid)) != 0)
        err(EXIT_FAILURE, "toLong('%s')", argv[1]);

    if ((errno = toInt(argv[2], &numSigs)) != 0)
        err(EXIT_FAILURE, "toInt('%s')", argv[2]);

    if ((errno = toInt(argv[3], &sig)) != 0)
        err(EXIT_FAILURE, "toInt('%s')", argv[3]);

    printf("%s: sending signal %d to process %ld %d times\n",
            argv[0], sig, pid, numSigs);

    for (j = 0; j < numSigs; j++)
        if (kill(pid, sig) == -1)
            err(EXIT_FAILURE, "kill");

    if (argc > 4) {
        if ((errno = toInt(argv[4], &sig2)) != 0)
            err(EXIT_FAILURE, "getInt('%s')", argv[4]);
        if (kill(pid, sig2) == -1)
            err(EXIT_FAILURE, "kill");
    }

    printf("%s: exiting\n", argv[0]);
    exit(EXIT_SUCCESS);
}

void
usage(const char *progname)
{
    fprintf(stderr, "%s pid count signo [signo-2]\n", progname);
    exit(EXIT_FAILURE);
}
