Hi all,

Implemented yes(1), sync(1) and printenv(1).  Source is attached,
haven't had time to write the manpage yet.

Cheers,
stateless
/* See LICENSE file for copyright and license details. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <err.h>

int
main(int argc, char *argv[])
{
	int i;
	char *p;

	if (argc > 1) {
		do {
			for (i = 1; i < argc; i++) {
				p = argv[i];
				while (*p && *p != '\n')
					if (putchar(*p++) == EOF)
						err(1, "putchar");
				if (putchar(' ') == EOF)
					err(1, "putchar");
			}
			if (putchar('\n') == EOF)
				err(1, "putchar");
		} while (1);
	} else {
		do {
			if (puts("y") == EOF)
				err(1, "puts");
		} while (1);
	}

	/* Not reached */
	return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

extern char **environ;

static void
usage(void)
{
	fprintf(stderr, "usage: printenv [variable]\n");
	exit(EXIT_FAILURE);
}

int
main(int argc, char *argv[])
{
	int i;
	char **ep;
	int ch;
	size_t len;
	char *p;

	while ((ch = getopt(argc, argv, "")) != -1) {
		switch (ch) {
		case '?':
		default:
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	if (!argc) {
		for (ep = environ; *ep; ep++)
			printf("%s\n", *ep);
		return EXIT_SUCCESS;
	} else {
		for (i = 0; argv[i]; i++) {
			len = strlen(argv[i]);
			for (ep = environ; *ep; ep++) {
				if (!memcmp(*ep, argv[i], len)) {
					p = *ep + len;
					printf("%s\n",
					       *p ? p + 1 : p);
				}
			}
		}
	}

	return EXIT_SUCCESS;
}
/* See LICENSE file for copyright and license details. */
#include <stdlib.h>
#include <unistd.h>

extern void sync(void);

int
main(void)
{
	sync();
	return EXIT_SUCCESS;
}

Reply via email to