#define _GNU_SOURCE

#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <errno.h>
#include <pwd.h>

void usage(void);

int
main(int argc, char *argv[])
{
    struct passwd *pwuid;
    struct passwd *pwnam;

    if (argc != 3)
        usage();

    if ((pwnam = getpwnam(argv[1])) != NULL)
        printf("%s %ld\n", pwnam->pw_name, (long) pwnam->pw_uid);
    else
        errx(EXIT_FAILURE, "getpwnam: error or user not found");

    if ((pwuid = getpwuid(atoi(argv[2]))) != NULL)
        printf("%s %ld\n", pwuid->pw_name, (long) pwuid->pw_uid);
    else
        errx(EXIT_FAILURE, "getpwuid: error or user not found");


    printf("\t%s %ld\n", pwnam->pw_name, (long) pwnam->pw_uid);
    printf("\t%s %ld\n", pwuid->pw_name, (long) pwuid->pw_uid);
    exit(EXIT_SUCCESS);
}

void
usage(void)
{
    errx(EXIT_FAILURE, "usage: %s username uid", program_invocation_short_name);
}
