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

81 lines
1.3 KiB
C
Raw Normal View History

2024-03-09 14:12:06 +05:30
/*
* 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_FILE_NAME, "a+");
if (fs == NULL)
{
perror ("fopen");
exit (EXIT_FAILURE);
}
2024-03-09 14:12:06 +05:30
fseek (fs, 0L, SEEK_END);
result = extol (fs);
for (result <<= 4, result &= ~15; (result & 15) != 15; result++)
2024-03-09 14:12:06 +05:30
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;
}