head	1.2;
access;
symbols
	netbsd-11-0-RC4:1.2
	netbsd-11-0-RC3:1.2
	netbsd-11-0-RC2:1.2
	netbsd-11-0-RC1:1.2
	perseant-exfatfs-base-20250801:1.2
	netbsd-11:1.2.0.30
	netbsd-11-base:1.2
	netbsd-10-1-RELEASE:1.2
	perseant-exfatfs-base-20240630:1.2
	perseant-exfatfs:1.2.0.28
	perseant-exfatfs-base:1.2
	netbsd-8-3-RELEASE:1.2
	netbsd-9-4-RELEASE:1.2
	netbsd-10-0-RELEASE:1.2
	netbsd-10-0-RC6:1.2
	netbsd-10-0-RC5:1.2
	netbsd-10-0-RC4:1.2
	netbsd-10-0-RC3:1.2
	netbsd-10-0-RC2:1.2
	netbsd-10-0-RC1:1.2
	netbsd-10:1.2.0.26
	netbsd-10-base:1.2
	netbsd-9-3-RELEASE:1.2
	cjep_sun2x-base1:1.2
	cjep_sun2x:1.2.0.24
	cjep_sun2x-base:1.2
	cjep_staticlib_x-base1:1.2
	netbsd-9-2-RELEASE:1.2
	cjep_staticlib_x:1.2.0.22
	cjep_staticlib_x-base:1.2
	netbsd-9-1-RELEASE:1.2
	phil-wifi-20200421:1.2
	phil-wifi-20200411:1.2
	is-mlppp:1.2.0.20
	is-mlppp-base:1.2
	phil-wifi-20200406:1.2
	netbsd-8-2-RELEASE:1.2
	netbsd-9-0-RELEASE:1.2
	netbsd-9-0-RC2:1.2
	netbsd-9-0-RC1:1.2
	phil-wifi-20191119:1.2
	netbsd-9:1.2.0.18
	netbsd-9-base:1.2
	phil-wifi-20190609:1.2
	netbsd-8-1-RELEASE:1.2
	netbsd-8-1-RC1:1.2
	pgoyette-compat-merge-20190127:1.2
	pgoyette-compat-20190127:1.2
	pgoyette-compat-20190118:1.2
	pgoyette-compat-1226:1.2
	pgoyette-compat-1126:1.2
	pgoyette-compat-1020:1.2
	pgoyette-compat-0930:1.2
	pgoyette-compat-0906:1.2
	pgoyette-compat-0728:1.2
	netbsd-8-0-RELEASE:1.2
	phil-wifi:1.2.0.16
	phil-wifi-base:1.2
	pgoyette-compat-0625:1.2
	netbsd-8-0-RC2:1.2
	pgoyette-compat-0521:1.2
	pgoyette-compat-0502:1.2
	pgoyette-compat-0422:1.2
	netbsd-8-0-RC1:1.2
	pgoyette-compat-0415:1.2
	pgoyette-compat-0407:1.2
	pgoyette-compat-0330:1.2
	pgoyette-compat-0322:1.2
	pgoyette-compat-0315:1.2
	pgoyette-compat:1.2.0.14
	pgoyette-compat-base:1.2
	matt-nb8-mediatek:1.2.0.12
	matt-nb8-mediatek-base:1.2
	perseant-stdc-iso10646:1.2.0.10
	perseant-stdc-iso10646-base:1.2
	netbsd-8:1.2.0.8
	netbsd-8-base:1.2
	prg-localcount2-base3:1.2
	prg-localcount2-base2:1.2
	prg-localcount2-base1:1.2
	prg-localcount2:1.2.0.6
	prg-localcount2-base:1.2
	pgoyette-localcount:1.2.0.4
	pgoyette-localcount-20170426:1.2
	bouyer-socketcan:1.2.0.2
	bouyer-socketcan-base1:1.2
	OpenBSD-20170410:1.1.1.1
	OPENBSD:1.1.1;
locks; strict;
comment	@ * @;


1.2
date	2017.04.10.16.37.48;	author christos;	state Exp;
branches
	1.2.2.1
	1.2.4.1;
next	1.1;
commitid	9tubolmWs4Ryw0Nz;

1.1
date	2017.04.10.16.34.18;	author christos;	state Exp;
branches
	1.1.1.1;
next	;
commitid	P9WVAD4QdW3Fv0Nz;

1.2.2.1
date	2017.04.10.16.37.48;	author christos;	state dead;
branches;
next	1.2.2.2;

1.2.2.2
date	2017.04.10.16.37.49;	author christos;	state Exp;
branches;
next	;

1.2.4.1
date	2017.04.10.16.37.48;	author pgoyette;	state dead;
branches;
next	1.2.4.2;
commitid	ojV02aOSdzvBqZOz;

1.2.4.2
date	2017.04.26.02.53.34;	author pgoyette;	state Exp;
branches;
next	;
commitid	ojV02aOSdzvBqZOz;

1.1.1.1
date	2017.04.10.16.34.18;	author christos;	state Exp;
branches;
next	;
commitid	P9WVAD4QdW3Fv0Nz;


desc
@@


1.2
log
@build fixes.
@
text
@/*	$NetBSD$	*/
/*	$OpenBSD: dc.c,v 1.18 2016/07/17 17:30:47 otto Exp $	*/

/*
 * Copyright (c) 2003, Otto Moerbeek <otto@@drijf.net>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
#include <sys/cdefs.h>
__RCSID("$NetBSD$");

#include <sys/stat.h>
#include <err.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "extern.h"

static __dead void	usage(void);

static __dead void
usage(void)
{
	(void)fprintf(stderr, "usage: %s [-x] [-e expression] [file]\n",
	    getprogname());
	exit(1);
}

int
dc_main(int argc, char *argv[])
{
	int		ch;
	bool		extended_regs = false;
	FILE		*file;
	struct source	src;
	char		*buf, *p;
	struct stat	st;

	if ((buf = strdup("")) == NULL)
		err(1, NULL);
	/* accept and ignore a single dash to be 4.4BSD dc(1) compatible */
	optind = 1;
	optreset = 1;
	while ((ch = getopt(argc, argv, "e:x-")) != -1) {
		switch (ch) {
		case 'e':
			p = buf;
			if (asprintf(&buf, "%s %s", buf, optarg) == -1)
				err(1, NULL);
			free(p);
			break;
		case 'x':
			extended_regs = true;
			break;
		case '-':
			break;
		default:
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	init_bmachine(extended_regs);
	(void)setvbuf(stdout, NULL, _IOLBF, 0);
	(void)setvbuf(stderr, NULL, _IOLBF, 0);

	if (argc > 1)
		usage();
	if (buf[0] != '\0') {
		src_setstring(&src, buf);
		reset_bmachine(&src);
		eval();
		free(buf);
		if (argc == 0)
			return (0);
	}
	if (argc == 1) {
		file = fopen(argv[0], "r");
		if (file == NULL)
			err(1, "cannot open file %s", argv[0]);

#ifdef __OpenBSD__
		if (pledge("stdio", NULL) == -1)
			err(1, "pledge");
#endif

		if (fstat(fileno(file), &st) == -1)
			err(1, "%s", argv[0]);
		if (S_ISDIR(st.st_mode))
			errc(1, EISDIR, "%s", argv[0]);
		src_setstream(&src, file);
		reset_bmachine(&src);
		eval();
		(void)fclose(file);
		/*
		 * BSD and Solaris dc(1) continue with stdin after processing
		 * the file given as the argument. We follow GNU dc(1).
		 */
		 return (0);
	}

#ifdef __OpenBSD__
	if (pledge("stdio", NULL) == -1)
		err(1, "pledge");
#endif

	src_setstream(&src, stdin);
	reset_bmachine(&src);
	eval();

	return (0);
}
@


1.2.2.1
log
@file dc.c was added on branch bouyer-socketcan on 2017-04-10 16:37:49 +0000
@
text
@d1 125
@


1.2.2.2
log
@758515
@
text
@a0 125
/*	$NetBSD: dc.c,v 1.2 2017/04/10 16:37:48 christos Exp $	*/
/*	$OpenBSD: dc.c,v 1.18 2016/07/17 17:30:47 otto Exp $	*/

/*
 * Copyright (c) 2003, Otto Moerbeek <otto@@drijf.net>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
#include <sys/cdefs.h>
__RCSID("$NetBSD: dc.c,v 1.2 2017/04/10 16:37:48 christos Exp $");

#include <sys/stat.h>
#include <err.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "extern.h"

static __dead void	usage(void);

static __dead void
usage(void)
{
	(void)fprintf(stderr, "usage: %s [-x] [-e expression] [file]\n",
	    getprogname());
	exit(1);
}

int
dc_main(int argc, char *argv[])
{
	int		ch;
	bool		extended_regs = false;
	FILE		*file;
	struct source	src;
	char		*buf, *p;
	struct stat	st;

	if ((buf = strdup("")) == NULL)
		err(1, NULL);
	/* accept and ignore a single dash to be 4.4BSD dc(1) compatible */
	optind = 1;
	optreset = 1;
	while ((ch = getopt(argc, argv, "e:x-")) != -1) {
		switch (ch) {
		case 'e':
			p = buf;
			if (asprintf(&buf, "%s %s", buf, optarg) == -1)
				err(1, NULL);
			free(p);
			break;
		case 'x':
			extended_regs = true;
			break;
		case '-':
			break;
		default:
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	init_bmachine(extended_regs);
	(void)setvbuf(stdout, NULL, _IOLBF, 0);
	(void)setvbuf(stderr, NULL, _IOLBF, 0);

	if (argc > 1)
		usage();
	if (buf[0] != '\0') {
		src_setstring(&src, buf);
		reset_bmachine(&src);
		eval();
		free(buf);
		if (argc == 0)
			return (0);
	}
	if (argc == 1) {
		file = fopen(argv[0], "r");
		if (file == NULL)
			err(1, "cannot open file %s", argv[0]);

#ifdef __OpenBSD__
		if (pledge("stdio", NULL) == -1)
			err(1, "pledge");
#endif

		if (fstat(fileno(file), &st) == -1)
			err(1, "%s", argv[0]);
		if (S_ISDIR(st.st_mode))
			errc(1, EISDIR, "%s", argv[0]);
		src_setstream(&src, file);
		reset_bmachine(&src);
		eval();
		(void)fclose(file);
		/*
		 * BSD and Solaris dc(1) continue with stdin after processing
		 * the file given as the argument. We follow GNU dc(1).
		 */
		 return (0);
	}

#ifdef __OpenBSD__
	if (pledge("stdio", NULL) == -1)
		err(1, "pledge");
#endif

	src_setstream(&src, stdin);
	reset_bmachine(&src);
	eval();

	return (0);
}
@


1.2.4.1
log
@file dc.c was added on branch pgoyette-localcount on 2017-04-26 02:53:34 +0000
@
text
@d1 125
@


1.2.4.2
log
@Sync with HEAD
@
text
@a0 125
/*	$NetBSD: dc.c,v 1.2 2017/04/10 16:37:48 christos Exp $	*/
/*	$OpenBSD: dc.c,v 1.18 2016/07/17 17:30:47 otto Exp $	*/

/*
 * Copyright (c) 2003, Otto Moerbeek <otto@@drijf.net>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
#include <sys/cdefs.h>
__RCSID("$NetBSD: dc.c,v 1.2 2017/04/10 16:37:48 christos Exp $");

#include <sys/stat.h>
#include <err.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "extern.h"

static __dead void	usage(void);

static __dead void
usage(void)
{
	(void)fprintf(stderr, "usage: %s [-x] [-e expression] [file]\n",
	    getprogname());
	exit(1);
}

int
dc_main(int argc, char *argv[])
{
	int		ch;
	bool		extended_regs = false;
	FILE		*file;
	struct source	src;
	char		*buf, *p;
	struct stat	st;

	if ((buf = strdup("")) == NULL)
		err(1, NULL);
	/* accept and ignore a single dash to be 4.4BSD dc(1) compatible */
	optind = 1;
	optreset = 1;
	while ((ch = getopt(argc, argv, "e:x-")) != -1) {
		switch (ch) {
		case 'e':
			p = buf;
			if (asprintf(&buf, "%s %s", buf, optarg) == -1)
				err(1, NULL);
			free(p);
			break;
		case 'x':
			extended_regs = true;
			break;
		case '-':
			break;
		default:
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	init_bmachine(extended_regs);
	(void)setvbuf(stdout, NULL, _IOLBF, 0);
	(void)setvbuf(stderr, NULL, _IOLBF, 0);

	if (argc > 1)
		usage();
	if (buf[0] != '\0') {
		src_setstring(&src, buf);
		reset_bmachine(&src);
		eval();
		free(buf);
		if (argc == 0)
			return (0);
	}
	if (argc == 1) {
		file = fopen(argv[0], "r");
		if (file == NULL)
			err(1, "cannot open file %s", argv[0]);

#ifdef __OpenBSD__
		if (pledge("stdio", NULL) == -1)
			err(1, "pledge");
#endif

		if (fstat(fileno(file), &st) == -1)
			err(1, "%s", argv[0]);
		if (S_ISDIR(st.st_mode))
			errc(1, EISDIR, "%s", argv[0]);
		src_setstream(&src, file);
		reset_bmachine(&src);
		eval();
		(void)fclose(file);
		/*
		 * BSD and Solaris dc(1) continue with stdin after processing
		 * the file given as the argument. We follow GNU dc(1).
		 */
		 return (0);
	}

#ifdef __OpenBSD__
	if (pledge("stdio", NULL) == -1)
		err(1, "pledge");
#endif

	src_setstream(&src, stdin);
	reset_bmachine(&src);
	eval();

	return (0);
}
@


1.1
log
@Initial revision
@
text
@d1 1
d19 2
a32 2
extern char		*__progname;

d37 1
a37 1
	    __progname);
d95 1
d98 1
d115 1
d118 1
@


1.1.1.1
log
@Import OpenBSD's dc.
@
text
@@
