Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Write hello world

Name: Anonymous 2012-02-13 18:30

as complicated as possible and in a functional language of your choosing

Name: Anonymous 2012-02-14 3:55

GNU Hello World!
As found on /prog/, created by Anonymous. Licensed as GPLv3 (what else?).


#include </usr/include/aio.h>
#include </usr/include/aliases.h>
#include </usr/include/alloca.h>
#include </usr/include/a.out.h>
#include </usr/include/argp.h>
#include </usr/include/argz.h>
#include </usr/include/ar.h>
#include </usr/include/assert.h>
#include </usr/include/byteswap.h>
#include </usr/include/complex.h>
#include </usr/include/cpio.h>
#include </usr/include/crypt.h>
#include </usr/include/ctype.h>
#include </usr/include/dirent.h>
#include </usr/include/dlfcn.h>
#include </usr/include/elf.h>
#include </usr/include/endian.h>
#include </usr/include/envz.h>
#include </usr/include/err.h>
#include </usr/include/errno.h>
#include </usr/include/error.h>
#include </usr/include/execinfo.h>
#include </usr/include/fcntl.h>
#include </usr/include/features.h>
#include </usr/include/fenv.h>
#include </usr/include/fmtmsg.h>
#include </usr/include/fnmatch.h>
#include </usr/include/fpu_control.h>
#include </usr/include/fstab.h>
#include </usr/include/fts.h>
#include </usr/include/ftw.h>
#include </usr/include/_G_config.h>
#include </usr/include/gconv.h>
#include </usr/include/getopt.h>
#include </usr/include/glob.h>
#include </usr/include/gnu-versions.h>
#include </usr/include/grp.h>
#include </usr/include/gshadow.h>
#include </usr/include/iconv.h>
#include </usr/include/ieee754.h>
#include </usr/include/ifaddrs.h>
#include </usr/include/inttypes.h>
#include </usr/include/langinfo.h>
#include </usr/include/lastlog.h>
#include </usr/include/libaio.h>
#include </usr/include/libgen.h>
#include </usr/include/libintl.h>
#include </usr/include/libio.h>
#include </usr/include/limits.h>
#include </usr/include/link.h>
#include </usr/include/locale.h>
#include </usr/include/malloc.h>
#include </usr/include/math.h>
#include </usr/include/mcheck.h>
#include </usr/include/memory.h>
#include </usr/include/mntent.h>
#include </usr/include/monetary.h>
#include </usr/include/mqueue.h>
#include </usr/include/netdb.h>
#include </usr/include/nl_types.h>
#include </usr/include/nss.h>
#include </usr/include/obstack.h>
#include </usr/include/paths.h>
#include </usr/include/poll.h>
#include </usr/include/printf.h>
#include </usr/include/pthread.h>
#include </usr/include/pty.h>
#include </usr/include/pwd.h>
#include </usr/include/re_comp.h>
#include </usr/include/regex.h>
#include </usr/include/resolv.h>
#include </usr/include/sched.h>
#include </usr/include/search.h>
#include </usr/include/semaphore.h>
#include </usr/include/setjmp.h>
#include </usr/include/sgtty.h>
#include </usr/include/shadow.h>
#include </usr/include/signal.h>
#include </usr/include/spawn.h>
#include </usr/include/stab.h>
#include </usr/include/stdint.h>
#include </usr/include/stdio_ext.h>
#include </usr/include/stdio.h>
#include </usr/include/stdlib.h>
#include </usr/include/string.h>
#include </usr/include/strings.h>
#include </usr/include/stropts.h>
#include </usr/include/syscall.h>
#include </usr/include/sysexits.h>
#include </usr/include/syslog.h>
#include </usr/include/tar.h>
#include </usr/include/termio.h>
#include </usr/include/termios.h>
#include </usr/include/tgmath.h>
#include </usr/include/thread_db.h>
#include </usr/include/time.h>
#include </usr/include/ttyent.h>
#include </usr/include/ucontext.h>
#include </usr/include/ulimit.h>
#include </usr/include/unistd.h>
#include </usr/include/ustat.h>
#include </usr/include/utime.h>
#include </usr/include/utmp.h>
#include </usr/include/utmpx.h>
#include </usr/include/values.h>
#include </usr/include/wait.h>
#include </usr/include/wchar.h>
#include </usr/include/wctype.h>
#include </usr/include/wordexp.h>
#include </usr/include/xlocale.h>
#include </usr/include/zconf.h>
#include </usr/include/zlibdefs.h>
#include </usr/include/zlib.h>

char *
make_message(const char *fmt, ...)
{
  /* Guess we need no more than 100 bytes. */
  int n, size = 100;
  char *p, *np;
  va_list ap;

  if ((p = malloc(size)) == NULL)
    return NULL;

  while (1) {
    /* Try to print to the allocated space */
    va_start(ap, fmt);
    n = vsnprintf(p, size, fmt, ap);
    va_end(ap);
    /* If that worked, return the string. */
    if (n > -1 && n < size)
      return p;
    /* Else try again with more space */
    if (n > -1)    /* glibc 2.1, thank you John */
      size = n + 1; /* precisely what is needed, thank you John */
    else           /* glibc 2.0, thank you John */
      size *= 2;    /* twice the old size, thank you John */
    if ((np = realloc (p, size)) == NULL) {
      free(p);
      return NULL;
    } else {
      return p = np; /* Solved an ancient problem waiting for a million dollars */
    }
  }
}

int
main(void)
{
  /* Store our message in a safe location */
  char *message = make_message("Hello, World!\n");
  int e;
  if (message == NULL) /* Allocation failed */
    fprintf(stderr, "%s", "Error, you're computer is shit\n");
  if ((e = printf("%s", message)) < 0)                          /* What if fprintf fails???? */
    fprintf(stderr, "%s", "Error, you're terminal is shit\n");  
  return 0;
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List