#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "file_mode.h"

static mode_t leaf_mode;

char *progname;

static int make_fifo(char *dir)
{
	if (mkfifo(dir, leaf_mode)) {
		/*
		 * We failed, remove the directory we created.
		 */
		fprintf(stderr, "%s: ", progname);
		perror(dir);
		return -1;
	}
	return 0;
}

int main(int argc, char *argv[])
{
	int c, ret = 0;
	mode_t saved_umask;

	progname = argv[0];

	saved_umask = umask(0);
	leaf_mode = (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) &
		     ~saved_umask;

	do {
		c = getopt(argc, argv, "m:");
		if (c == EOF)
			break;
		switch (c) {
		case 'm':
			leaf_mode = parse_file_mode(optarg, leaf_mode, saved_umask);
			break;

		case '?':
			fprintf(stderr, "%s: invalid option -%c\n",
				progname, optopt);
			exit(1);
		}
	} while (1);

	if (optind == argc) {
		fprintf(stderr, "Usage: %s [-m mode] file...\n",
			progname);
		exit(1);
	}

	while (optind < argc) {
		if (make_fifo(argv[optind]))
			ret = 255; /* seems to be what gnu mkdir does */
		optind++;
	}

	return ret;
}
