#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const char* initialize()
{
	static char X[128];
	time_t timloc;
	time_t ltime = time(&timloc);
	//fprintf(stderr, "whee!\n");
	strftime(X, 64, "%a %b %d %T %Z %Y", localtime(&ltime));
	return X;
}

const char* initialize2()
{
	fprintf(stderr, "hi from initialize2\n");
	return "biggie";
}

class Pstr {
	static const char* msg;
	const char* mymsg;
    public:
	Pstr(const char* s) : mymsg(s) {}
	Pstr() : mymsg("default") {}
	void printme(int i);
	~Pstr() { };
};

void Pstr::printme(int i)
{
	static int j = 3;
	if (
		i > 0
	){
		fprintf(stderr, "started at %s\n", msg);
		return;
	}
	++j;
	printf("%s: %d\n", mymsg, j);
	return;
}
const char* Pstr::msg = initialize();
static const char* ss = initialize2();
Pstr T("ho");

int main(int argc, char** argv)
{

	fprintf(stderr, "starting main\n");
	static const char* s = "hi";
	static int k;
	switch(argc)  {
		case 0:
			 break;
		case 1:
			k = 7;
			break;
		default:
			k = argc-1;
	}
	const char* t; ++argc;
	int i;
	static Pstr S;
	printf("k = %d\n", k);
	if (argc > 2) printf("got %d args\n", argc-1);
	S.printme(0);
	t = "more"; ++argc;
	// Pstr T(t);
	k ? *argv[0] + t[1] : 'c';
	T.printme(0);
	T.printme(1);
	if (argc > 3) {
		printf("got many args\n");
		return 0;
	}
	else
	{
		printf("got just %d args\n", argc-1);
	}
	for (i=argc/2; i < argc; ++i)
	{
		printf("%s %s %s, %d\n",
			"here",
			"is",
			t,
			argc);
	}
	return 0;
}
