1
0
mirror of https://gitlab.com/80486DX2-66/gists synced 2024-11-15 05:45:55 +05:30
gists/c-programming/jokes/extol.c

76 lines
1.2 KiB
C

/*
* extol.c [joke!]
*
* Author: Intel A80486DX2-66
* License: Creative Commons Zero 1.0 Universal
*/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
enum
{
EXTOL_NORMAL,
EXTOL_QUIET
} EXTOL_MODE;
#define EXTOL_PROTOTYPE "int extol(FILE* f)"
int
extol (FILE *f)
{
static bool spec_run = true;
int result;
if (spec_run == false)
{
printf ("\n");
return !(spec_run = true) - spec_run;
}
if (f == NULL)
{
FILE *fs = fopen ("extol.txt", "a+");
fseek (fs, 0L, SEEK_END);
result = extol (fs);
for (result <<= 4; (result & 15) != 15; result++)
fputc ('=', fs);
result >>= 4;
fprintf (fs, "\n");
fclose (f);
}
else
{
result = fprintf (f, "PRAISE THE USER!\n");
}
spec_run = false;
return result;
}
int
extol_interface (signed char type)
{
FILE *f;
f = type == EXTOL_NORMAL ? stdout : NULL;
return printf (EXTOL_PROTOTYPE " returns %d\n", extol (f));
}
void
extol_quiet (void)
{
extol_interface (EXTOL_QUIET);
}
int
main (void)
{
int i;
for (i = 0; i < 2; i++)
printf (EXTOL_PROTOTYPE ": %d\n", extol_interface (EXTOL_NORMAL));
atexit (&extol_quiet);
return 0;
}