#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

#include <slurm/slurm_errno.h>
#include "src/common/log.h"

int bad_func()
{
	slurm_seterrno_ret(EINVAL);
}
int main(int ac, char **av)
{
	/* test elements */
	char string[]  = "test string";
	double f       = 9876543210.0123456;
	int   i        = 67890;
	int   negi     = -i;
	unsigned int u = 1234;
	char *p        = NULL;

	log_options_t log_opts = LOG_OPTS_INITIALIZER;

	log_opts.stderr_level = LOG_LEVEL_DEBUG2;

	/* test log to stderr when log not initialized */
	error("testing with uninitialized log.");

	/* now initialize log: */
	log_init("log-test", log_opts, 0, NULL);

	error  ("testing error");
	info   ("testing info ");
	verbose("testing verbose");
	debug  ("testing debug level 1");
	debug2 ("testing debug level 2");
	debug3 ("ERROR: Should not see this.");

	info   ("testing print of null pointer: %p = %s",  p, p);

	info   ("testing double: %18.7f int: %05i string `%s'", f, i, string);

	info   ("testing unsigned: %u   int: % 08d", u, negi);

	switch (fork()) {
          case 0:
		  info("in child %ld", (long int) getpid());
		  log_reinit();
		  info("in child after log reinit");
		  exit(0);
		  break;
	  case -1:
		  error("fork: %m");
		  break;
	  default:
		  info("in parent %ld", (long int) getpid());
		  break;
	}
	/* for now, this test passes if we make it through without
	 * dumping core
	 */

	if (bad_func() < 0)
		error("bad_func: %m");
	return 0;
}
