[
  {
    "path": ".gitignore",
    "content": "*.o\nvgcore*\ntester\nfiles\ntester.dSYM\nmyleaks.txt\ncompile_commands.json\n.cache/\nmain.c\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"get_next_line\"]\n\tpath = get_next_line\n\turl = https://github.com/paulo-santana/get_next_line\n"
  },
  {
    "path": "Makefile",
    "content": "LIBFTPRINTF_DIR = ../\nERROR_LIMIT = 0\n\nSHELL = /bin/sh\n\n# I'm not proud of this\nTESTS = $(shell for ((i=1;i<=2000;i++)); do echo \"$$i \"; done)\n\nNAME = tester\nLIBTEST = libtest/libtest.a\nLIBFTPRINTF = ${LIBFTPRINTF_DIR}/libftprintf.a\n\nSRC_DIR = ./src\nOBJ_DIR = ./obj\n\nSRCS_FILES = main.c \\\n\t\t\t tests.c \\\n\t\t\t get_next_line.c \\\n\t\t\t get_next_line_utils.c \\\n\t\t\t utils.c\n\nHEADERS_FILES = helpers.h\nHEADERS = ${addprefix ${SRC_DIR}/, ${HEADERS_FILES}}\n\nSRCS = ${addprefix ${SRC_DIR}/, ${SRCS_FILES}}\n\nOBJS_FILES = ${SRCS_FILES:.c=.o}\nOBJS = ${addprefix ${OBJ_DIR}/, ${OBJS_FILES}}\n\nCFLAGS = -Wall -Wextra -g3\n\nPRINTF_FLAGS = ${CFLAGS} -Werror\n\nSANITIZE = -fsanitize=address\n\nUNAME = ${shell uname -s}\nifeq (${UNAME}, Darwin)\n\tSRCS_FILES := ${SRCS_FILES} malloc_count.c \nendif\n\nCC = clang ${CFLAGS}\n\nexport LSAN_OPTIONS=exitcode=30\n\nall: ${NAME}\n\t@echo \"\"\n\nnosan: SANITIZE :=\nnosan: ${NAME}\n\t@echo \"\"\n\n${NAME}: ${LIBFTPRINTF} ${LIBTEST} ${HEADERS} ${OBJS}\n\t${CC} ${SANITIZE} -L./libtest -L${LIBFTPRINTF_DIR} ${OBJS} -o ${NAME} -ltest -lftprintf -ldl\n\tmkdir -p files\n\n${LIBFTPRINTF}:\n\tmake -C ${LIBFTPRINTF_DIR}\n\n${LIBTEST}:\n\tmake -C libtest CFLAGS=\"${CFLAGS}\"\n\n${OBJ_DIR}/%.o: ${SRC_DIR}/%.c ${HEADERS} Makefile\n\t${CC} -DERROR_LIMIT=${ERROR_LIMIT} -DBUFFER_SIZE=32 -c $< -o $@\n\nr: run\nrun:\n\t./${NAME} 2>myleaks.txt\n\n${TESTS}: SANITIZE := -fsanitize=address\n${TESTS}: ${NAME}\n\t./${NAME} $@ 2>myle\n\n_bonus:\n\tmake CFLAGS=\"${PRINTF_FLAGS}\" -C ${LIBFTPRINTF_DIR} bonus\n\nbonus: _bonus ${NAME}\n\nbonusnosan: SANITIZE :=\nbonusnosan: _bonus ${NAME}\n\npush:\n\tgit add -A\n\tgit commit -m \"chore: automated commit\"\n\tgit push\n\nclean:\n\t@echo cleaning...\n\t@make -C ./libtest clean\n\tmake -C ${LIBFTPRINTF_DIR} clean\n\t@${RM} ${OBJS}\n\nfclean: clean\n\t@make -C ./libtest fclean\n\tmake -C ${LIBFTPRINTF_DIR} fclean\n\t@${RM} ${NAME}\n\nre: fclean all\n\n.PHONY: ${NAME} ${LIBTEST} ${LIBFTPRINTF}\n"
  },
  {
    "path": "README.md",
    "content": "# ft_printf tester\nA tester for 42's **ft_printf** project.\n\n## Disclaimer and an advice\n\nTry to not use these tests (or any other tests you didn't code yourself) to develop your project.\n**Write your own tests instead***.\nSince the C01 piscine list, 42 expects us to use more time writing test code than actual\nproject code. And this comes with a bunch of somewhat \"invisible\" benefits, and if you don't practice it you won't notice\nyou're losing them.\n\nTo get better at programming, you need to practice. But the more tests written by other persons you use,\nthe less tests you'll write yourself. Writing fewer tests means writing less code overall. And blindly following tests\nyou didn't write means you won't be exercising creativity and could probably squeeze even more your tunnel vision.\nAnd these tests might even be wrong or incomplete.\n\nThis whole project started as a \"side job\" when I was doing my printf. It was actually funnier to work on it and I learned\nA LOT about processes, signals, forks and pipes. These concepts are the basis of the minishell project. There's no need for you \nto go this deep if you're a newbee in programming or just don't have enough time, but you shouldn't be neglecting the benefits of\nwriting more code and learning new stuff.\n\nDo yourself a favor and write your own tests.\n\n#### Why this?\nAfter some intense arguments, I realised this tester could be harmful for people that misuse it, as it is an automation of a\nhuge part of what is expected by the project (for you to write a big load of tests). I could just destroy this repository and\ngo on my way, but I know it won't stop people from using it, there are backups everywhere, and I would just be erasing a cool project\nfrom my github profile. So instead I'll leave these advices here, it's up to you to follow them or not. I would recommend using testers only after being\nKOed by the moulinette.\n\n\n-----------------\n\nIt runs a series of tests against `ft_printf()` and compares the output with \nthe original `printf()`. It works on both linux and mac. On linux and macos the output differs.\n\nIf a test detects that the output is wrong, it will print information about\nwhat should've been printed.\n\nIt compiles the program with the AddressSanitizer flag, mainly to detect memory leaks\nand invalid access. However, it makes the tests run slowly. The option `nosan` disables the\ncompilation with the address sanitizer, so the tests can run faster. Because the ASAN's LeakSanitizer\ndoesn't work on Mac, this tester checks for memory leaks using a library called `malloc_count` if running\non Darwin.\n\nIf you find any problems, please\n[open an issue](https://github.com/paulo-santana/ft_printf_tester/issues/new)\n\n### RTFM\n\nClone the test repository inside the folder where you generate the `libftprintf.a`\nfile, then `cd` into it.\n\nThe tests are managed maily by a shell script. Here are some command examples:\n\n* `sh test`: run all the tests\n* `sh test m`: run all the mandatory tests\n* `sh test b1`: run the first bonus tests (`'-0.'` and widths)\n* `sh test b2`: run the second bonus tests (`'# +'`)\n* `sh test d`: run only the `mandatory` tests related to the `%d` specifier. Currently, only the\n`cspdiuxX%` specifiers are supported\n* `sh test b1 c`: run the `b1` tests related to the `%c` specifier.\n* `sh test b2 X`: run the `b2` tests related to the `%X` specifier.\n* `sh test b1 b2`: run all the bonus tests\n* `sh test nosan`: run all the tests without the AddressSanitizer\n* `sh test nosan m`: run all the mandatory tests without the AddressSanitizer\n* `sh test nosan b1`: run the first bonus tests without the AddressSanitizer\n* `sh test nosan p`: run all tests related to the `%p` without the AddressSanitizer\n* `sh test 1088`: run only the 1088th test\n\n### Limiting errors output\n\nIf there are so many errors that you can't even see the whole output, you can\nlimit the error tolerance by changing the `ERROR_LIMIT` variable in the Makefile.\nBy default, it is set to 0, which means no limit.\n\nYou can also pipe the output to `less`:\n`sh test | less -r`\n\n\n### TODO:\n- [x] Print useful information in case of errors\n    - [x] print the diff between `printf` and `ft_printf`\n    - [x] print the function that was called on that specific test\n    - [x] give information about when the returned value was wrong\n"
  },
  {
    "path": "libtest/.gitignore",
    "content": "libtest.a\n*.o\n"
  },
  {
    "path": "libtest/Makefile",
    "content": "NAME = libtest.a\n\nSRCS = string.c \\\n\t   print_errors.c \\\n\t   diff.c\n\nOBJS = ${SRCS:.c=.o}\n\nAR = ar rcs\nCFLAGS = -Wall -Werror -Wextra\nCC = clang ${CFLAGS}\n\nall: ${NAME}\n\n${NAME}: ${OBJS}\n\t${AR} ${NAME} ${OBJS}\n\n%.o: %.c\n\t${CC} -c $< -o $@ \n\nclean:\n\t${RM} ${OBJS}\n\nfclean: clean\n\t${RM} ${NAME}\n\nre: fclean all\n"
  },
  {
    "path": "libtest/diff.c",
    "content": "#include \"libtest.h\"\n\nint test_string(char *expected, char *got, int limit)\n{\n\tint success = 1;\n\n\tif (expected == NULL) {\n\t\tif (got != NULL)\n\t\t\tsuccess = 0;\n\t} else if (got == NULL)\n\t\tsuccess = 0;\n\telse if (memcmp(expected, got, limit) != 0)\n\t\tsuccess = 0;\n\treturn (success);\n}\n"
  },
  {
    "path": "libtest/libtest.h",
    "content": "#ifndef LIBTEST_H\n# define LIBTEST_H\n\n# include <ctype.h>\n# include <unistd.h>\n# include <fcntl.h>\n# include <string.h>\n# include <stdlib.h>\n# include <stdio.h>\n\n# define BOLD\t\t\"\\x1b[1m\"\n# define RED\t\t\"\\x1b[31m\"\n# define GREEN \t\t\"\\x1b[32m\"\n# define YELLOW\t\t\"\\x1b[33m\"\n# define BLUE\t\t\"\\x1b[34m\"\n# define MAGENTA\t\"\\x1b[35m\"\n# define CYAN\t\t\"\\x1b[36m\"\n# define RESET\t\t\"\\x1b[0m\"\n\nsize_t\ttester_strlen(const char *str);\nvoid tester_putchar(char c);\nvoid tester_putstr(char *str);\nvoid tester_putnbr(int nbr);\nchar *tester_strnstr(const char *big, const char *little, size_t len);\nvoid print_int_diff(int expected, int result);\nvoid print_string_diff(char expected[], char result[], unsigned int expected_size, unsigned int result_size);\nint test_string(char *expected, char *got, int limit);\nint test_int(char *description, int expected, int result);\nvoid print_success(char *desc, int success);\nvoid print_non_print(char c);\n\n#endif\n"
  },
  {
    "path": "libtest/print_errors.c",
    "content": "#include \"libtest.h\"\n\nvoid print_int_diff(int expected, int result) {\n\ttester_putstr(\"        Expected: \");\n\ttester_putnbr(expected);\n\ttester_putstr(\"\\n        Got     : \" RED);\n\ttester_putnbr(result);\n\ttester_putstr(RESET \"\\n\");\n}\n\nvoid print_non_print(char c) {\n\tchar cx[3];\n\tint size = 0;\n\tchar *hexmap = \"0123456789abcdef\";\n\n\tif (c == '\\n') {\n\t\tcx[0] = '\\\\';\n\t\tcx[1] = 'n';\n\t\tsize = 2;\n\t} else if (c >= 16) {\n\t\tcx[0] = '\\\\';\n\t\tcx[1] = hexmap[c / 16];\n\t\tcx[2] = hexmap[c % 16];\n\t\tsize = 3;\n\t} else {\n\t\tcx[0] = '\\\\';\n\t\tcx[1] = hexmap[c % 16];\n\t\tsize = 2;\n\t}\n\ttester_putstr(MAGENTA);\n\twrite(1, cx, size);\n\ttester_putstr(RESET);\n}\n"
  },
  {
    "path": "libtest/string.c",
    "content": "#include \"libtest.h\"\n\nsize_t\ttester_strlen(const char *str)\n{\n\tsize_t\tlen;\n\n\tlen = 0;\n\twhile (*str++)\n\t\tlen++;\n\treturn (len);\n}\n\nstatic int\tstr_matches(char *str, const char *target)\n{\n\tint\tmatches;\n\tint\tto_find_pos;\n\n\tmatches = 0;\n\tto_find_pos = 0;\n\twhile (target[to_find_pos] != '\\0')\n\t{\n\t\tif (target[to_find_pos] != str[to_find_pos])\n\t\t{\n\t\t\tmatches = 0;\n\t\t\tto_find_pos++;\n\t\t\tbreak ;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmatches = 1;\n\t\t\tto_find_pos++;\n\t\t}\n\t}\n\treturn (matches);\n}\n\nchar\t*tester_strnstr(const char *big, const char *little, size_t len)\n{\n\tsize_t\ti;\n\tsize_t\tlimit;\n\tint\t\tmatches;\n\tint\t\tlittle_len;\n\tchar\t*match_start;\n\n\ti = 0;\n\tmatches = 0;\n\tlittle_len = tester_strlen((char *)little);\n\tif (little_len == 0)\n\t\treturn ((char *)big);\n\tif (len == 0)\n\t\treturn (NULL);\n\tlimit = len - little_len;\n\twhile (i <= limit)\n\t{\n\t\tif (big[i] == 0)\n\t\t\tbreak ;\n\t\tmatch_start = (char *)&big[i];\n\t\tmatches = str_matches(match_start, little);\n\t\tif (matches)\n\t\t\treturn (match_start);\n\t\ti++;\n\t}\n\treturn (0);\n}\n\nvoid tester_putchar(char c)\n{\n\twrite(1, &c, 1);\n}\n\nvoid tester_putstr(char *str)\n{\n\tsize_t len = strlen(str);\n\twrite(1, str, len);\n}\n\nvoid tester_putnbr(int nbr)\n{\n\tlong\tnumber;\n\tchar\tdigit;\n\n\tnumber = nbr;\n\tif (number < 0)\n\t{\n\t\twrite(1, \"-\", 1);\n\t\tnumber *= -1;\n\t}\n\tif (number > 9)\n\t{\n\t\ttester_putnbr(number / 10);\n\t\ttester_putnbr(number % 10);\n\t}\n\telse\n\t{\n\t\tdigit = number + '0';\n\t\twrite(1, &digit, 1);\n\t}\n}\n"
  },
  {
    "path": "malloc_count-0.7/README.md",
    "content": "# README for malloc_count #\n\n`malloc_count` provides a set of source code tools to **measure the amount of\nallocated memory of a program at run-time**. The code library provides\nfacilities to\n\n* measure the **current and peak** heap memory allocation, and\n* write a **memory profile** for plotting, see the figure on the right.\n* Furthermore, separate `stack_count` function can measure **stack usage**.\n\nThe code tool works by intercepting the standard `malloc()`, `free()`, etc\nfunctions. Thus **no changes** are necessary to the inspected source code.\n\nSee <http://panthema.net/2013/malloc_count> for the current verison.\n\n## Intercepting Heap Allocation Functions ##\n\nThe source code of `malloc_count.[ch]` intercepts the standard heap allocation\nfunctions `malloc()`, `free()`, `realloc()` and `calloc()` and adds simple\ncounting statistics to each call. Thus the program must be relinked for\n`malloc_count` to work. Each call to `malloc()` and others is passed on to\nlower levels, and the regular `malloc()` is used for heap allocation.\n\nOf course, `malloc_count` can also be used with C++ programs and maybe even\nscript languages, because the `new` operator and script interpreter allocations\nall are based on `malloc`.\n\nThe tools are usable under Linux and probably also with Cygwin and MinGW, as\nthey too support the standard Linux dynamic link loading mechanisms.\n\n## Memory Profile and `stack_count`\n\nThe `malloc_count` source is accompanied by two further memory analysis tools:\n`stack_count` and a C++ header called `memprofile.h`.\n\nIn `stack_count.[ch]` two simple functions are provided that can measure the\n**maximum stack usage** between two points in a program.\n\nMaybe the most useful application of `malloc_count` is to create a\n**memory/heap profile** of a program (while it is running). This profile can\nalso be created using the well-known\n[valgrind tool \"massif\"](http://valgrind.org/docs/manual/ms-manual.html),\nhowever, massif is really slow. The overhead of `malloc_count` is much smaller,\nand using `memprofile.h` a statistic file can be produced, which is directly\nusable with Gnuplot.\n\nThe source code archive contains two example applications: one which queries\n`malloc_count` for current heap usage, and a second which creates the memory\nprofile in the figure on the right. See the STX B+ Tree library for another,\nmore complex example of a memory profile.\n\n## Downloads ##\n\nSee <http://panthema.net/2013/malloc_count> for the current verison.\n\nThe source code is published under the\n[MIT License (MIT)](http://opensource.org/licenses/MIT), which is also found in\nthe header of all source files.\n\n## Short Usage Guide ##\n\nCompile `malloc_count.c` and link it with your program. The source file\n`malloc_count.o` should be located towards the end of the `.o` file\nsequence. You must also add \"`-ldl`\" to the list of libraries.\n\nRun your program and observe that when terminating, it outputs a line like\n\n    malloc_count ### exiting, total: 12,582,912, peak: 4,194,304, current: 0\n\nIf desired, increase verbosity\n\n1. by setting `log_operations = 1` at the top of `malloc_count.c` and adapting\n   `log_operations_threshold` to output only large allocations, or\n2. by including `malloc_count.h` in your program and using the user-functions\n   define therein to output memory usage at specific checkpoints. See the\n   directory `test-malloc_count/` in the source code for an example.\n\nTip: Set the locale environment variable `LC_NUMERIC=en_GB` or similar to get\ncomma-separation of thousands in the printed numbers.\n\nThe directory `test-memprofile/` contains a simple program, which fills a\n`std::vector` and `std::set` with integers. The memory usage of these\ncontainers is profiled using the facilities of `memprofile.h`, which are\ndescribed verbosely in the source.\n\n## Thread Safety ##\n\nThe current statistic methods in `malloc_count.c` are **not thread-safe**.\nHowever, the general mechanism (as described below) is per-se thread-safe. The\nonly non-safe parts are adding and subtracting from the counters in\n`inc_count()` and `dec_count()`.\n\nThe `malloc_count.c` code contains a `#define THREAD_SAFE_GCC_INTRINSICS`,\nwhich enables use of gcc's intrinsics for atomic counting operations. If you\nuse gcc, enable this option to make the `malloc_count` tool thread-safe.\n\nThe functions in `memprofile.h` are not thread-safe. `stack_count` can also be\nused on local thread stacks.\n\n## Technicalities of Intercepting `libc` Function Calls ##\n\nThe method used in `malloc_count` to hook the standard heap allocation calls is\nto provide a source file exporting the symbols \"`malloc`\", \"`free`\", etc. These\noverride the libc symbols and thus the functions in `malloc_count` are used\ninstead.\n\nHowever, `malloc_count` does not implement a heap allocator. It loads the symbols\n\"`malloc`\", \"`free`\", etc. directly using the dynamic link loader \"`dl`\" from the\nchain of shared libraries. Calls to the overriding \"`malloc`\" functions are\nforwarded to the usual libc allocator.\n\nTo keep track of the size of each allocated memory area, `malloc_count` uses a\ntrick: it prepends each allocation pointer with two `size_t` variables: the\nallocation size and a sentinel value. Thus when allocating *n* bytes, in truth\n*n + 16* bytes are requested from the libc `malloc()` to save the size. The\nsentinel only serves as a check that your program has not overwritten the size\ninformation.\n\n## Closing Credits ##\n\nThe idea for this augmenting interception method is not my own, it was borrowed\nfrom Jeremy Kerr <http://ozlabs.org/~jk/code/>.\n\nWritten 2013-01-21 and 2013-03-16 by Timo Bingmann <tb@panthema.net>\n"
  },
  {
    "path": "malloc_count-0.7/memprofile.h",
    "content": "/******************************************************************************\n * memprofile.h\n *\n * Class to write the datafile for a memory profile plot using malloc_count.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * This program is free software: you can redistribute it and/or modify it\n * under the terms of the GNU General Public License as published by the Free\n * Software Foundation, either version 3 of the License, or (at your option)\n * any later version.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n * more details.\n *\n * You should have received a copy of the GNU General Public License along with\n * this program.  If not, see <http://www.gnu.org/licenses/>.\n *****************************************************************************/\n\n#ifndef _MEM_PROFILE_H_\n#define _MEM_PROFILE_H_\n\n#include <stdio.h>\n#include <sys/time.h>\n\n#include \"malloc_count.h\"\n\n/**\n * MemProfile is a class which hooks into malloc_count's callback and writes a\n * heap usage profile at run-time.\n *\n * A usual application will have many heap allocations and deallocations,\n * therefore these must be aggregated to create a useful plot. This is the main\n * purposes of MemProfile. However, the \"resolution\" of discrete aggregation\n * intervals must be configured manually, as they highly depend on the profiled\n * application.\n */\nclass MemProfile\n{\nprotected:\n\n    /// output time resolution\n    double      m_time_resolution;\n    /// output memory resolution\n    size_t      m_size_resolution;\n\n    /// function marker for multi-output\n    const char* m_funcname;\n    /// output file\n    FILE*       m_file;\n\n    /// start of current memprofile\n    double      m_base_ts;\n    /// start memory usage of current memprofile\n    size_t      m_base_mem;\n    /// start stack pointer of memprofile\n    char*       m_stack_base;\n\n    /// timestamp of previous log output\n    double      m_prev_ts;\n    /// memory usage of previous log output\n    size_t      m_prev_mem;\n    /// maximum memory usage to previous log output\n    size_t      m_max;\n\nprotected:\n\n    /// template function missing in cmath, absolute difference\n    template <typename Type>\n    static inline Type absdiff(const Type& a, const Type& b)\n    {\n        return (a < b) ? (b - a) : (a - b);\n    }\n\n    /// time is measured using gettimeofday() or omp_get_wtime()\n    static inline double timestamp()\n    {\n#ifdef _OPENMP\n        return omp_get_wtime();\n#else\n        struct timeval tv;\n        gettimeofday(&tv, NULL);\n        return tv.tv_sec + tv.tv_usec / 1e6;\n#endif\n    }\n\n    /// output a data pair (ts,mem) to log file\n    inline void output(double ts, unsigned long long mem)\n    {\n        if (m_funcname) { // more verbose output format\n            fprintf(m_file, \"func=%s ts=%g mem=%llu\\n\",\n                    m_funcname, ts - m_base_ts, mem);\n        }\n        else { // simple gnuplot output\n            fprintf(m_file, \"%g %llu\\n\",\n                    ts - m_base_ts, mem);\n        }\n    }\n\n    /// callback invoked by malloc_count when heap usage changes.\n    inline void callback(size_t memcurr)\n    {\n        size_t mem = (memcurr > m_base_mem) ? (memcurr - m_base_mem) : 0;\n\n        if ((char*)&mem < m_stack_base) // add stack usage\n            mem += m_stack_base - (char*)&mem;\n\n        double ts = timestamp();\n        if (m_max < mem) m_max = mem; // keep max usage to last output\n\n        // check to output a pair\n        if (ts - m_prev_ts > m_time_resolution ||\n            absdiff(mem, m_prev_mem) > m_size_resolution )\n        {\n            output(ts, m_max);\n            m_max = 0;\n            m_prev_ts = ts;\n            m_prev_mem = mem;\n        }\n    }\n\n    /// static callback for malloc_count, forwards to class method.\n    static void static_callback(void* cookie, size_t memcurr)\n    {\n        return static_cast<MemProfile*>(cookie)->callback(memcurr);\n    }\n\npublic:\n\n    /** Constructor for MemProfile.\n     * @param filepath          file to write memprofile log entries to.\n     * @param time_resolution   resolution when a log entry is always written.\n     * @param size_resolution   resolution when a log entry is always written.\n     * @param funcname          enables multi-function output, appends to file.\n     */\n    MemProfile(const char* filepath,\n               double time_resolution = 0.1, size_t size_resolution = 1024,\n               const char* funcname = NULL)\n        : m_time_resolution( time_resolution ),\n          m_size_resolution( size_resolution ),\n          m_funcname( funcname ),\n          m_base_ts( timestamp() ),\n          m_base_mem( malloc_count_current() ),\n          m_prev_ts( 0 ),\n          m_prev_mem( 0 ),\n          m_max( 0 )\n    {\n        char stack;\n        m_stack_base = &stack;\n        m_file = fopen(filepath, funcname ? \"a\" : \"w\");\n        malloc_count_set_callback(MemProfile::static_callback, this);\n    }\n\n    /// Destructor flushes currently aggregated values and closes the file.\n    ~MemProfile()\n    {\n        m_prev_ts = 0; // force flush\n        m_prev_mem = 0;\n        callback( malloc_count_current() );\n        malloc_count_set_callback(NULL, NULL);\n        fclose(m_file);\n    }\n};\n\n#endif // _MEM_PROFILE_H_\n"
  },
  {
    "path": "malloc_count-0.7/stack_count.c",
    "content": "/******************************************************************************\n * stack_count.c\n *\n * Header containing two functions to monitor stack usage of a program.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *****************************************************************************/\n\n#include \"stack_count.h\"\n\n#include <inttypes.h>\n\n/* default stack size on Linux is 8 MiB, so fill 75% of it. */\nstatic const size_t stacksize = 6*1024*1024;\n\n/* \"clear\" the stack by writing a sentinel value into it. */\nvoid* stack_count_clear(void)\n{\n    const size_t asize = stacksize / sizeof(uint32_t);\n    uint32_t stack[asize]; /* allocated on stack */\n    uint32_t* p = stack;\n    while ( p < stack + asize ) *p++ = 0xDEADC0DEu;\n    return p;\n}\n\n/* checks the maximum usage of the stack since the last clear call. */\nsize_t stack_count_usage(void* lastbase)\n{\n    const size_t asize = stacksize / sizeof(uint32_t);\n    uint32_t* p = (uint32_t*)lastbase - asize; /* calculate top of last clear. */\n    while ( *p == 0xDEADC0DEu ) ++p;\n    return ((uint32_t*)lastbase - p) * sizeof(uint32_t);\n}\n\n/*****************************************************************************/\n"
  },
  {
    "path": "malloc_count-0.7/stack_count.h",
    "content": "/******************************************************************************\n * stack_count.h\n *\n * Header containing two functions to monitor stack usage of a program.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *****************************************************************************/\n\n#ifndef _STACK_COUNT_H_\n#define _STACK_COUNT_H_\n\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" { /* for inclusion from C++ */\n#endif\n\n/* \"clear\" the stack by writing a sentinel value into it. */\nextern void* stack_count_clear(void);\n\n/* checks the maximum usage of the stack since the last clear call. */\nextern size_t stack_count_usage(void* lastbase);\n\n#ifdef __cplusplus\n} /* extern \"C\" */\n#endif\n\n#endif /* _STACK_COUNT_H_ */\n\n/*****************************************************************************/\n"
  },
  {
    "path": "malloc_count-0.7/test-malloc_count/Makefile",
    "content": "# Simplistic Makefile for malloc_count example\n\nCC = gcc\nCFLAGS = -g -W -Wall -ansi -I..\nLDFLAGS =\nLIBS = -ldl\nOBJS = test.o ../malloc_count.o ../stack_count.o\n\nall: test\n\n%.o: %.c\n\t$(CC) $(CFLAGS) -c -o $@ $<\n\ntest: $(OBJS)\n\t$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)\n\nclean:\n\trm -f *.o test\n"
  },
  {
    "path": "malloc_count-0.7/test-malloc_count/test.c",
    "content": "/******************************************************************************\n * test-malloc_count/test.c\n *\n * Small program to test malloc_count hooks and user functions.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *****************************************************************************/\n\n#include \"malloc_count.h\"\n#include \"stack_count.h\"\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n\nvoid function_use_stack()\n{\n    char data[64*1024];\n    memset(data, 1, sizeof(data));\n}\n\nint main()\n{\n    /* allocate and free some memory */\n    void* a = malloc(2*1024*1024);\n    free(a);\n\n    /* query malloc_count for information */\n    printf(\"our peak memory allocation: %lld\\n\",\n           (long long)malloc_count_peak());\n\n    /* use realloc() */\n    void* b = malloc(3*1024*1024);\n    malloc_count_print_status();\n\n    b = realloc(b, 2*1024*1024);\n    malloc_count_print_status();\n\n    b = realloc(b, 4*1024*1024);\n    malloc_count_print_status();\n\n    free(b);\n\n    /* some unusual realloc calls */\n    void* c = realloc(NULL, 1*1024*1024);\n    c = realloc(c, 0);\n\n    /* show how stack_count works */\n    {\n        void* base = stack_count_clear();\n        function_use_stack();\n        printf(\"maximum stack usage: %lld\\n\",\n               (long long)stack_count_usage(base));\n    }\n\n    return 0;\n}\n\n/*****************************************************************************/\n"
  },
  {
    "path": "malloc_count-0.7/test-memprofile/Makefile",
    "content": "# Simplistic Makefile for malloc_count example\n\nCC = gcc\nCXX = g++\nCFLAGS = -g -W -Wall -ansi -I..\nCXXFLAGS = -g -W -Wall -ansi -I..\nLDFLAGS =\nLIBS = -ldl\nOBJS = test.o ../malloc_count.o\n\nall: test\n\n%.o: %.c\n\t$(CC) $(CFLAGS) -c -o $@ $<\n\n%.o: %.cc\n\t$(CXX) $(CXXFLAGS) -c -o $@ $<\n\ntest: $(OBJS)\n\t$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)\n\nclean:\n\trm -f *.o test\n"
  },
  {
    "path": "malloc_count-0.7/test-memprofile/memprofile.gnuplot",
    "content": "#!/usr/bin/env gnuplot\n\nset terminal pdf size 28cm,18cm linewidth 2.0\nset output \"memprofile.pdf\"\n\nset key top right\nset grid xtics ytics\n\nset title 'Memory Profile of Test Program'\nset xlabel 'Time [s]'\nset ylabel 'Memory Usage [MiB]'\n\nplot \\\n    'memprofile.txt' using 1:($2 / 1024/1024) title 'memprofile' with lines\n"
  },
  {
    "path": "malloc_count-0.7/test-memprofile/test.cc",
    "content": "/******************************************************************************\n * test-memprofile/test.cc\n *\n * Example to write a memory profile.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * This program is free software: you can redistribute it and/or modify it\n * under the terms of the GNU General Public License as published by the Free\n * Software Foundation, either version 3 of the License, or (at your option)\n * any later version.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n * more details.\n *\n * You should have received a copy of the GNU General Public License along with\n * this program.  If not, see <http://www.gnu.org/licenses/>.\n *****************************************************************************/\n\n#include \"memprofile.h\"\n\n#include <vector>\n#include <set>\n\nint main()\n{\n    MemProfile mp(\"memprofile.txt\", 0.1, 1024);\n\n    {\n        std::vector<int> v;\n        for (size_t i = 0; i < 10000000; ++i)\n            v.push_back(i);\n    }\n\n    {\n        std::set<int> v;\n        for (size_t i = 0; i < 200000; ++i)\n            v.insert(i);\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "obj/.gitignore",
    "content": "*.o\n"
  },
  {
    "path": "src/.gitignore",
    "content": "main\nprinter\n\n"
  },
  {
    "path": "src/ft_printf_tester.h",
    "content": "#ifndef FT_PRINTF_TESTER_H\n# define FT_PRINTF_TESTER_H\n# include <unistd.h>\n# include <stdlib.h>\n# include <signal.h>\n\ntypedef struct s_result {\n\tint return_value;\n\tchar *output_str;\n\tssize_t bytes_read;\n} t_result;\n\nint run_tests(int tests);\n\nint check_return(int user_file, int orig_file);\nvoid dscribe(char *test_title);\nint check_result(t_result *user_result, t_result *orig_result, char *params_used);\nvoid print_help(char *params_used);\nvoid describe(char *test_title);\n\n# define ERRORS_LEAK 1\n# define ERRORS_BUFFER_OVERFLOW 2\n# define ERRORS_SIGSEGV 3\n\n# define BUFSIZE 100\n\nvoid open_pipes(int *p1, int *p2);\nvoid prepare_test(char *err_file, int *outpipe, int *retpipe);\nvoid finish_test(int result, int *outpipe, int *retpipe);\nvoid fetch_result(t_result *result, char *output_buffer, int *stdout_pipe, int *rtrn_pipe);\nvoid handle_errors(int wstatus, t_result *user_r, t_result *orig_r,\n\t\tchar *user_output, int *output_pipe, int *return_pipe);\n\n# define CAT_C         0b00000000000001\n# define CAT_S         0b00000000000010\n# define CAT_P         0b00000000000100\n# define CAT_D         0b00000000001000\n# define CAT_I         0b00000000010000\n# define CAT_U         0b00000000100000\n# define CAT_X         0b00000001000000\n# define CAT_BIG_X     0b00000010000000\n# define CAT_PERCENT   0b00000100000000\n# define CAT_MANDATORY 0b00001000000000\n# define CAT_BONUS     0b00010000000000\n# define CAT_BONUS_1   0b00100000000000\n# define CAT_BONUS_2   0b01000000000000\n\n#endif\n"
  },
  {
    "path": "src/get_next_line.c",
    "content": "/* ************************************************************************** */\n/*                                                                            */\n/*                                                        :::      ::::::::   */\n/*   get_next_line_bonus.c                              :+:      :+:    :+:   */\n/*                                                    +:+ +:+         +:+     */\n/*   By: psergio- <psergio-@student.42sp.org.br>    +#+  +:+       +#+        */\n/*                                                +#+#+#+#+#+   +#+           */\n/*   Created: 2021/06/05 18:06:57 by psergio-          #+#    #+#             */\n/*   Updated: 2021/06/17 02:55:33 by psergio-         ###   ########.fr       */\n/*                                                                            */\n/* ************************************************************************** */\n\n#include \"get_next_line.h\"\n\nvoid\tclear_buffer(char **buffer)\n{\n\tif (*buffer)\n\t{\n\t\tfree(*buffer);\n\t}\n\t*buffer = NULL;\n}\n\nstatic char\t*merge_buffer(char *dest, t_buffer *buf)\n{\n\tsize_t\tdest_len;\n\tsize_t\tresult_len;\n\tchar\t*result;\n\tsize_t\ti;\n\tint\t\tj;\n\n\tdest_len = 0;\n\tif (dest)\n\t\tdest_len = gnl_ft_strlen(dest);\n\tresult_len = dest_len + buf->next_nl - buf->start;\n\tresult = malloc(sizeof(char) * (result_len + 1));\n\tif (result == NULL)\n\t\treturn (NULL);\n\ti = 0;\n\twhile (i < dest_len)\n\t{\n\t\tresult[i] = dest[i];\n\t\ti++;\n\t}\n\tj = buf->start;\n\twhile (j < buf->next_nl)\n\t\tresult[i++] = buf->data[j++];\n\tresult[i] = '\\0';\n\treturn (result);\n}\n\n/**\n * Fetches `BUFFER_SIZE` characters from file `fd` and append them to the\n * string *new_line. If a \\n is found during the read() call, it appends only\n * the text until this \\n and returns `GNL_LINE_READ`. If no newline character\n * is found, it appends the whole buffer and returns `GNL_NO_NEWLINE`. If an\n * error occurs, `GNL_ERROR` will be returned. And if we reached `fd`s end,\n * `GNL_END_OF_FILE` will be returned.\n * */\n\nstatic int\tappend_next_chunk(int fd, char **new_line, t_buffer *buf)\n{\n\tchar\t\t*merged_str;\n\n\tif (buf->start >= buf->end)\n\t{\n\t\tbuf->end = read(fd, buf->data, BUFFER_SIZE);\n\t\tbuf->start = 0;\n\t}\n\tif (buf->end == -1)\n\t\treturn (GNL_ERROR);\n\tbuf->next_nl = buf->start;\n\twhile (buf->next_nl < buf->end && buf->data[buf->next_nl] != '\\n')\n\t\tbuf->next_nl++;\n\tmerged_str = merge_buffer(*new_line, buf);\n\tbuf->start = buf->next_nl + 1;\n\tif (merged_str == NULL)\n\t\treturn (GNL_ERROR);\n\tif (*new_line)\n\t\tfree(*new_line);\n\t*new_line = merged_str;\n\tif (buf->next_nl < buf->end)\n\t\treturn (GNL_LINE_READ);\n\tif (buf->end < BUFFER_SIZE)\n\t\treturn (GNL_END_OF_FILE);\n\treturn (GNL_NO_NEWLINE);\n}\n\n/**\n * Fetches the next string from file `fd` and put it in *line. The string\n * will be truncated on the first \\n encountered, or by the end of file.\n * */\n\nint\tget_next_line(int fd, char **line)\n{\n\tchar\t\t\t*new_line;\n\tint\t\t\t\tresult;\n\tstatic t_buffer\tbuffers[FD_SETSIZE];\n\n\tnew_line = NULL;\n\t*line = new_line;\n\tif (fd < 0 || fd >= FD_SETSIZE)\n\t\treturn (GNL_ERROR);\n\tif (buffers[fd].data == NULL)\n\t{\n\t\tbuffers[fd].data = malloc((BUFFER_SIZE) * sizeof(char));\n\t\tif (buffers[fd].data == NULL)\n\t\t\treturn (GNL_ERROR);\n\t\tbuffers[fd].start = BUFFER_SIZE;\n\t}\n\tresult = GNL_NO_NEWLINE;\n\twhile (result == GNL_NO_NEWLINE)\n\t{\n\t\tresult = append_next_chunk(fd, &new_line, &buffers[fd]);\n\t\t*line = new_line;\n\t}\n\tif (result == GNL_END_OF_FILE || result == GNL_ERROR)\n\t\tclear_buffer(&(buffers[fd].data));\n\treturn (result);\n}\n"
  },
  {
    "path": "src/get_next_line.h",
    "content": "/* ************************************************************************** */\n/*                                                                            */\n/*                                                        :::      ::::::::   */\n/*   get_next_line_bonus.h                              :+:      :+:    :+:   */\n/*                                                    +:+ +:+         +:+     */\n/*   By: psergio- <psergio-@student.42sp.org.br>    +#+  +:+       +#+        */\n/*                                                +#+#+#+#+#+   +#+           */\n/*   Created: 2021/05/31 11:46:38 by psergio-          #+#    #+#             */\n/*   Updated: 2021/06/08 07:57:49 by psergio-         ###   ########.fr       */\n/*                                                                            */\n/* ************************************************************************** */\n\n#ifndef GET_NEXT_LINE_H\n# define GET_NEXT_LINE_H\n\n# include <unistd.h>\n# include <stdlib.h>\n\ntypedef struct s_buffer {\n\tint\t\tstart;\n\tint\t\tnext_nl;\n\tint\t\tend;\n\tchar\t*data;\n}\t\t\tt_buffer;\n\nsize_t\tft_strlcat(char *dest, const char *src, size_t size);\nsize_t\tgnl_ft_strlen(const char *str);\nvoid\t*ft_calloc(size_t count, size_t size);\n\n/**\n * Retrieves a string that ends with a newline charactere from the file\n * descriptor `fd` and make the pointer `line` point to it\n * */\n\nint\t\tget_next_line(int fd, char **line);\n\n# define GNL_ERROR -1\n# define GNL_END_OF_FILE 0\n# define GNL_LINE_READ 1\n# define GNL_NO_NEWLINE 2\n\n#endif\n"
  },
  {
    "path": "src/get_next_line_utils.c",
    "content": "/* ************************************************************************** */\n/*                                                                            */\n/*                                                        :::      ::::::::   */\n/*   get_next_line_utils_bonus.c                        :+:      :+:    :+:   */\n/*                                                    +:+ +:+         +:+     */\n/*   By: psergio- <psergio-@student.42sp.org.br>    +#+  +:+       +#+        */\n/*                                                +#+#+#+#+#+   +#+           */\n/*   Created: 2021/06/02 00:41:05 by psergio-          #+#    #+#             */\n/*   Updated: 2021/06/08 07:57:29 by psergio-         ###   ########.fr       */\n/*                                                                            */\n/* ************************************************************************** */\n\n#include \"get_next_line.h\"\n\nvoid\t*ft_calloc(size_t count, size_t size)\n{\n\tsize_t\ti;\n\tsize_t\tfull_size;\n\tchar\t*buffer;\n\n\tfull_size = count * size;\n\tbuffer = malloc(full_size);\n\tif (buffer == NULL)\n\t\treturn (NULL);\n\ti = 0;\n\twhile (i < full_size)\n\t\tbuffer[i++] = 0;\n\treturn (buffer);\n}\n\nsize_t\tft_strlcat(char *dest, const char *src, size_t size)\n{\n\tsize_t\ti;\n\tsize_t\tj;\n\n\ti = 0;\n\twhile (dest[i] != '\\0' && i < size)\n\t\ti++;\n\tj = 0;\n\twhile (src[j] != '\\0' && i + 1 < size)\n\t\tdest[i++] = src[j++];\n\tif (size > i)\n\t\tdest[i] = '\\0';\n\twhile (src[j++])\n\t\ti++;\n\treturn (i);\n}\n\nsize_t\tgnl_ft_strlen(const char *str)\n{\n\tsize_t\tlen;\n\n\tlen = 0;\n\twhile (*str++)\n\t\tlen++;\n\treturn (len);\n}\n"
  },
  {
    "path": "src/helpers.h",
    "content": "#ifndef HELPERS_H\n# define HELPERS_H\n\n# include \"../libtest/libtest.h\"\n# include <sys/wait.h>\n\n# define PRINTF(params) __PRINTF_EXPECTED(params, params)\n\n# define MALLOC_COUNT 1\n# define LEAK_SANITIZER 2\n\n#ifdef __linux__\n# define PRINTF_EXPECTED(params, expected) __PRINTF_EXPECTED(params, expected)\n# define LEAK_CHECKER LEAK_SANITIZER\n#elif defined __APPLE__\n# define PRINTF_EXPECTED(params, expected) __PRINTF_EXPECTED(params, params)\n# define LEAK_CHECKER MALLOC_COUNT\n#endif\n\n# define READ 0\n# define WRITE 1\n\n/*\n * trying to make the define smaller\n * or = orig_result;\n * ur = user_result;\n * op = stdout_pipe;\n * rp = rtrn_pipe;\n * \n * */\n\n#ifndef ERROR_LIMIT\n# define ERROR_LIMIT 0\n#endif\n\nextern int g_tests_failed;\nextern int g_tests_run;\n\n#define __PRINTF_EXPECTED(params, expected) { \\\n\talready_printed_help = 0; \\\n\tshould_run = (g_current_test == g_test_nbr) || (g_test_nbr == 0); \\\n\tif (should_run && right_cat) { \\\n\t\tg_tests_run++; \\\n\t\tt_result or, ur; \\\n\t\tint op[2], rp[2]; \\\n\t\topen_pipes(op, rp); \\\n\t\tint child = fork(); \\\n\t\tif (child == 0) { \\\n\t\t\tprepare_test(\"files/original_stderr.txt\", op, rp); \\\n\t\t\tint result = printf expected; \\\n\t\t\tfinish_test(result, op, rp); \\\n\t\t} else { \\\n\t\t\tfetch_result(&or, g_orig_fake_stdout, op, rp); \\\n\t\t\twaitpid(child, &wstatus, 0); \\\n\t\t} \\\n\t\topen_pipes(op, rp); \\\n\t\tint intermediate_pid = fork(); \\\n\t\tif (intermediate_pid == 0) { \\\n\t\t\tint worker = fork(); \\\n\t\t\tif (worker == 0) { \\\n\t\t\t\tprepare_test(\"files/user_stderr.txt\", op, rp); \\\n\t\t\t\tint result = ft_printf params; \\\n\t\t\t\tfinish_test(result, op, rp); \\\n\t\t\t} \\\n\t\t\tint killer = fork(); \\\n\t\t\tif (killer == 0) { \\\n\t\t\t\t/* sleep well before killing lol */ \\\n\t\t\t\tsleep(1); \\\n\t\t\t\t_exit(0); \\\n\t\t\t} \\\n\t\t\tint exited_pid = wait(&wstatus); \\\n\t\t\tif (exited_pid == worker) { \\\n\t\t\t\tkill(killer, SIGKILL); \\\n\t\t\t\twait(NULL); \\\n\t\t\t} else { \\\n\t\t\t\tkill(worker, SIGKILL); \\\n\t\t\t\twait(&wstatus); \\\n\t\t\t} \\\n\t\t\tint status; \\\n\t\t\tif (WIFEXITED(wstatus)) { \\\n\t\t\t\tstatus = WEXITSTATUS(wstatus); \\\n\t\t\t} else if(WIFSIGNALED(wstatus)) { \\\n\t\t\t\tstatus = WTERMSIG(wstatus); \\\n\t\t\t} else { status = -1; } \\\n\t\t\t_exit(status); \\\n\t\t} else { \\\n\t\t\twaitpid(intermediate_pid, &wstatus, 0); \\\n\t\t\tg_test_params = #params; \\\n\t\t\thandle_errors(wstatus, &ur, &or, g_user_fake_stdout, op, rp); \\\n\t\t} \\\n\t} \\\n\tif (ERROR_LIMIT > 0 && g_tests_failed > ERROR_LIMIT) \\\n\t\treturn (tester_putstr(BOLD RED \"Failed on more than 10 tests, stopping...\\n\"), 5); \\\n\tg_current_test++; \\\n}\n\n#endif\n"
  },
  {
    "path": "src/libftprintf.h",
    "content": "#ifndef LIBFTPRINT_H\n# define LIBFTPRINT_H\n\nint ft_printf(const char *, ...);\n\n#endif\n"
  },
  {
    "path": "src/malloc_count.c",
    "content": "/******************************************************************************\n * malloc_count.c\n *\n * malloc() allocation counter based on http://ozlabs.org/~jk/code/ and other\n * code preparing LD_PRELOAD shared objects.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *****************************************************************************/\n\n#define _GNU_SOURCE\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <locale.h>\n#include <dlfcn.h>\n\n#include \"malloc_count.h\"\n\n/* user-defined options for output malloc()/free() operations to stderr */\n\nstatic const int log_operations = 0;    /* <-- set this to 1 for log output */\nstatic const size_t log_operations_threshold = 1024*1024;\n\n/* option to use gcc's intrinsics to do thread-safe statistics operations */\n#define THREAD_SAFE_GCC_INTRINSICS      0\n\n/* function pointer to the real procedures, loaded using dlsym */\ntypedef void* (*malloc_type)(size_t);\ntypedef void  (*free_type)(void*);\ntypedef void* (*realloc_type)(void*, size_t);\n\nstatic malloc_type real_malloc = NULL;\nstatic free_type real_free = NULL;\nstatic realloc_type real_realloc = NULL;\n\n/* a sentinel value prefixed to each allocation */\nstatic const size_t sentinel = 0xDEADC0DE;\n\n/* a simple memory heap for allocations prior to dlsym loading */\n#define INIT_HEAP_SIZE 1024*1024\nstatic char init_heap[INIT_HEAP_SIZE];\nstatic size_t init_heap_use = 0;\nstatic const int log_operations_init_heap = 0;\n\n/*****************************************/\n/* run-time memory allocation statistics */\n/*****************************************/\n\nstatic long long peak = 0, curr = 0, total = 0;\n\nstatic malloc_count_callback_type callback = NULL;\nstatic void* callback_cookie = NULL;\n\n/* add allocation to statistics */\nstatic void inc_count(size_t inc)\n{\n#if THREAD_SAFE_GCC_INTRINSICS\n    long long mycurr = __sync_add_and_fetch(&curr, inc);\n    if (mycurr > peak) peak = mycurr;\n    total += inc;\n    if (callback) callback(callback_cookie, mycurr);\n#else\n    if ((curr += inc) > peak) peak = curr;\n    total += inc;\n    if (callback) callback(callback_cookie, curr);\n#endif\n}\n\n/* decrement allocation to statistics */\nstatic void dec_count(size_t dec)\n{\n#if THREAD_SAFE_GCC_INTRINSICS\n    long long mycurr = __sync_sub_and_fetch(&curr, dec);\n    if (callback) callback(callback_cookie, mycurr);\n#else\n    curr -= dec;\n    if (callback) callback(callback_cookie, curr);\n#endif\n}\n\n/* user function to return the currently allocated amount of memory */\nextern size_t malloc_count_current(void)\n{\n    return curr;\n}\n\n/* user function to return the peak allocation */\nextern size_t malloc_count_peak(void)\n{\n    return peak;\n}\n\n/* user function to reset the peak allocation to current */\nextern void malloc_count_reset_peak(void)\n{\n    peak = curr;\n}\n\n/* user function which prints current and peak allocation to stderr */\nextern void malloc_count_print_status(void)\n{\n    fprintf(stderr,\"malloc_count ### current %'lld, peak %'lld\\n\",\n            curr, peak);\n}\n\n/* user function to supply a memory profile callback */\nvoid malloc_count_set_callback(malloc_count_callback_type cb, void* cookie)\n{\n    callback = cb;\n    callback_cookie = cookie;\n}\n\n/****************************************************/\n/* exported symbols that overlay the libc functions */\n/****************************************************/\n\n/* exported malloc symbol that overrides loading from libc */\nextern void* malloc(size_t size)\n{\n    void* ret;\n\n    if (size == 0) return NULL;\n\n    if (real_malloc)\n    {\n        /* call read malloc procedure in libc */\n        ret = (*real_malloc)(2*sizeof(size_t) + size);\n\n        inc_count(size);\n        if (log_operations && size >= log_operations_threshold) {\n            fprintf(stderr,\"malloc_count ### malloc(%'lld) = %p   (current %'lld)\\n\",\n                    (long long)size, (char*)ret + 2*sizeof(size_t), curr);\n        }\n\n        /* prepend allocation size and check sentinel */\n        ((size_t*)ret)[0] = size;\n        ((size_t*)ret)[1] = sentinel;\n\n        return (char*)ret + 2*sizeof(size_t);\n    }\n    else\n    {\n        if (init_heap_use + sizeof(size_t) + size > INIT_HEAP_SIZE) {\n            fprintf(stderr,\"malloc_count ### init heap full !!!\\n\");\n            exit(EXIT_FAILURE);\n        }\n\n        ret = init_heap + init_heap_use;\n        init_heap_use += 2*sizeof(size_t) + size;\n\n        /* prepend allocation size and check sentinel */\n        ((size_t*)ret)[0] = size;\n        ((size_t*)ret)[1] = sentinel;\n\n        if (log_operations_init_heap) {\n            fprintf(stderr,\"malloc_count ### malloc(%'lld) = %p   on init heap\\n\",\n                    (long long)size, (char*)ret + 2*sizeof(size_t));\n        }\n\n        return (char*)ret + 2*sizeof(size_t);\n    }\n}\n\n/* exported free symbol that overrides loading from libc */\nextern void free(void* ptr)\n{\n    size_t size;\n\n    if (!ptr) return;   /* free(NULL) is no operation */\n\n    if ((char*)ptr >= init_heap &&\n        (char*)ptr <= init_heap + init_heap_use)\n    {\n        if (log_operations_init_heap) {\n            fprintf(stderr,\"malloc_count ### free(%p)   on init heap\\n\", ptr);\n        }\n        return;\n    }\n\n    if (!real_free) {\n        fprintf(stderr,\"malloc_count ### free(%p) outside init heap and without real_free !!!\\n\", ptr);\n        return;\n    }\n\n    ptr = (char*)ptr - 2*sizeof(size_t);\n\n    if (((size_t*)ptr)[1] != sentinel) {\n        fprintf(stderr,\"malloc_count ### free(%p) has no sentinel !!! memory corruption?\\n\", ptr);\n    }\n\n    size = ((size_t*)ptr)[0];\n    dec_count(size);\n\n    if (log_operations && size >= log_operations_threshold) {\n        fprintf(stderr,\"malloc_count ### free(%p) -> %'lld   (current %'lld)\\n\",\n                ptr, (long long)size, curr);\n    }\n\n    (*real_free)(ptr);\n}\n\n/* exported calloc() symbol that overrides loading from libc, implemented using our malloc */\nextern void* calloc(size_t nmemb, size_t size)\n{\n    void* ret;\n    size *= nmemb;\n    if (!size) return NULL;\n    ret = malloc(size);\n    memset(ret, 0, size);\n    return ret;\n}\n\n/* exported realloc() symbol that overrides loading from libc */\nextern void* realloc(void* ptr, size_t size)\n{\n    void* newptr;\n    size_t oldsize;\n\n    if ((char*)ptr >= (char*)init_heap &&\n        (char*)ptr <= (char*)init_heap + init_heap_use)\n    {\n        if (log_operations_init_heap) {\n            fprintf(stderr,\"malloc_count ### realloc(%p) = on init heap\\n\", ptr);\n        }\n\n        ptr = (char*)ptr - 2*sizeof(size_t);\n\n        if (((size_t*)ptr)[1] != sentinel) {\n            fprintf(stderr,\"malloc_count ### realloc(%p) has no sentinel !!! memory corruption?\\n\", ptr);\n        }\n\n        oldsize = ((size_t*)ptr)[0];\n\n        if (oldsize >= size) {\n            /* keep old area, just reduce the size */\n            ((size_t*)ptr)[0] = size;\n            return (char*)ptr + 2*sizeof(size_t);\n        }\n        else {\n            /* allocate new area and copy data */\n            ptr = (char*)ptr + 2*sizeof(size_t);\n            newptr = malloc(size);\n            memcpy(newptr, ptr, oldsize);\n            free(ptr);\n            return newptr;\n        }\n    }\n\n    if (size == 0) { /* special case size == 0 -> free() */\n        free(ptr);\n        return NULL;\n    }\n\n    if (ptr == NULL) { /* special case ptr == 0 -> malloc() */\n        return malloc(size);\n    }\n\n    ptr = (char*)ptr - 2*sizeof(size_t);\n\n    if (((size_t*)ptr)[1] != sentinel) {\n        fprintf(stderr,\"malloc_count ### free(%p) has no sentinel !!! memory corruption?\\n\", ptr);\n    }\n\n    oldsize = ((size_t*)ptr)[0];\n\n    dec_count(oldsize);\n    inc_count(size);\n\n    newptr = (*real_realloc)(ptr, 2*sizeof(size_t) + size);\n\n    if (log_operations && size >= log_operations_threshold)\n    {\n        if (newptr == ptr)\n            fprintf(stderr,\"malloc_count ### realloc(%'lld -> %'lld) = %p   (current %'lld)\\n\",\n                   (long long)oldsize, (long long)size, newptr, curr);\n        else\n            fprintf(stderr,\"malloc_count ### realloc(%'lld -> %'lld) = %p -> %p   (current %'lld)\\n\",\n                   (long long)oldsize, (long long)size, ptr, newptr, curr);\n    }\n\n    ((size_t*)newptr)[0] = size;\n\n    return (char*)newptr + 2*sizeof(size_t);\n}\n\nstatic __attribute__((constructor)) void init(void)\n{\n    char *error;\n\n    setlocale(LC_NUMERIC, \"\"); /* for better readable numbers */\n\n    dlerror();\n\n    real_malloc = (malloc_type)dlsym(RTLD_NEXT, \"malloc\");\n    if ((error = dlerror()) != NULL) {\n        fprintf(stderr, \"malloc_count ### error %s\\n\", error);\n        exit(EXIT_FAILURE);\n    }\n\n    real_realloc = (realloc_type)dlsym(RTLD_NEXT, \"realloc\");\n    if ((error = dlerror()) != NULL) {\n        fprintf(stderr, \"malloc_count ### error %s\\n\", error);\n        exit(EXIT_FAILURE);\n    }\n\n    real_free = (free_type)dlsym(RTLD_NEXT, \"free\");\n    if ((error = dlerror()) != NULL) {\n        fprintf(stderr, \"malloc_count ### error %s\\n\", error);\n        exit(EXIT_FAILURE);\n    }\n}\n\nstatic __attribute__((destructor)) void finish(void)\n{\n    fprintf(stderr,\"malloc_count ### exiting, total: %'lld, peak: %'lld, current: %'lld\\n\",\n            total, peak, curr);\n}\n\n/*****************************************************************************/\n"
  },
  {
    "path": "src/malloc_count.h",
    "content": "/******************************************************************************\n * malloc_count.h\n *\n * Header containing prototypes of user-callable functions to retrieve run-time\n * information about malloc()/free() allocation.\n *\n ******************************************************************************\n * Copyright (C) 2013 Timo Bingmann <tb@panthema.net>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *****************************************************************************/\n\n#ifndef _MALLOC_COUNT_H_\n#define _MALLOC_COUNT_H_\n\n#include <stdlib.h>\n\n#ifdef __cplusplus\nextern \"C\" { /* for inclusion from C++ */\n#endif\n\n/* returns the currently allocated amount of memory */\nextern size_t malloc_count_current(void);\n\n/* returns the current peak memory allocation */\nextern size_t malloc_count_peak(void);\n\n/* resets the peak memory allocation to current */\nextern void malloc_count_reset_peak(void);\n\n/* typedef of callback function */\ntypedef void (*malloc_count_callback_type)(void* cookie, size_t current);\n\n/* supply malloc_count with a callback function that is invoked on each change\n * of the current allocation. The callback function must not use\n * malloc()/realloc()/free() or it will go into an endless recursive loop! */\nextern void malloc_count_set_callback(malloc_count_callback_type cb, void* cookie);\n\n/* user function which prints current and peak allocation to stderr */\nextern void malloc_count_print_status(void);\n\n#ifdef __cplusplus\n} /* extern \"C\" */\n#endif\n\n#endif /* _MALLOC_COUNT_H_ */\n\n/*****************************************************************************/\n"
  },
  {
    "path": "src/system_printer.c",
    "content": "#include <stdio.h>\n#include <string.h>\n#include <fcntl.h>\n#include <unistd.h>\n\nint main(int argc, char *argv[])\n{\n\n\tif (argc == 2)\n\t{\n\t\tint file = open(\"./files/system_output.txt\", O_RDWR | O_CREAT | O_TRUNC, 0644);\n\t\tdup2(file, 1);\n\n\t\tchar *test_number = argv[1];\n\t\tif (strcmp(test_number, \"1\") == 0)\n\t\t{\n\t\t\tprintf(\"This is a simple test\\n\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/tests.c",
    "content": "#include \"ft_printf_tester.h\"\n#include \"helpers.h\"\n#include \"libftprintf.h\"\n\nextern char g_orig_fake_stdout[BUFSIZ];\nextern char g_user_fake_stdout[BUFSIZ];\nextern char *g_test_params;\nextern int g_test_nbr;\nextern int already_printed_help;\nextern int g_current_test;\nextern int g_all_bonus;\n\nint right_cat = 1;\n\nint run_tests(int test_cat)\n{\n\tint wstatus;\n\tchar *null_str = NULL;\n\tint should_run = 1;\n\n\tdescribe(\"basic test\");\n\n\tPRINTF((\"1, 2, 3, -d test, testing, 0.4s sound, 1, 2, 3xp, sound, -*dtest\"));\n\n\t// if no cateogry was specified, then  run all of the categories\n\tright_cat = test_cat ? test_cat & (CAT_C | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%c basic\");\n\n\tPRINTF((\"%c\", 'a'));\n\tPRINTF((\"%c%c%c*\", '\\0', '1', 1));\n\tPRINTF((\"%c small string\", 'a'));\n\tPRINTF((\"%c small string\", '\\0'));\n\tPRINTF((\"the char is: %c\", 'a'));\n\tPRINTF((\"the char is: %c\", '\\0'));\n\tPRINTF((\"n%cs\", 'a'));\n\tPRINTF((\"%c%c%c%c%c\", 'a', 'i', 'u', 'e', 'o'));\n\tPRINTF((\"l%cl%cl%cl%cl%c\", 'a', 'i', 'u', 'e', 'o'));\n\tPRINTF((\"l%cl%cl%cl%cl%c\", '\\0', '\\0', '\\0', 'e', '\\0'));\n\n\tright_cat = test_cat ? test_cat & (CAT_S | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%s basic\");\n\n\tPRINTF((\"%s\", \"\"));\n\tPRINTF((\"this is a %s\", \"test\"));\n\tPRINTF((\"this is 1 %s with %s %s\", \"test\", \"multiple\", \"strings\"));\n\tPRINTF((\"%s%s%s%s\", \"This \", \"is\", \" an ugly \", \"test\"));\n\tPRINTF((\"%s\", \"This is a rather simple test.\"));\n\tPRINTF((\"%s\", \"-2\"));\n\tPRINTF((\"%s\", \"-24\"));\n\tPRINTF((\"%s\", \"-stop\"));\n\tPRINTF((\"%s\", \"-0003\"));\n\tPRINTF((\"%s\", \"000-0003\"));\n\tPRINTF((\"%s\", \"0x42\"));\n\tPRINTF((\"%s\", \"0x0000042\"));\n\tPRINTF((\"some naugty tests: %s\", \"0000%\"));\n\tPRINTF((\"some naugty tests: %s\", \"    %\"));\n\tPRINTF((\"some naugty tests: %s\", \"%000\"));\n\tPRINTF((\"%s\", \"bea thought but bea forgot the loop that the chars cause she was floaty during the amsterdam siren call. she got me by surprise you probably read my mind that look in your eyes and judging by your own cries you probably read my mind this is a really long string and if you see this you must look at your return values!kthxbai this must have more than 127 chars by now isnt it ok 4242 4 life 1337 code everyday to the moon!\"));\n\tPRINTF((\"%s\", null_str));\n\tPRINTF((\"%s everywhere\", null_str));\n\tPRINTF((\"everywhere %s\", null_str));\n\tPRINTF((\"%s\", \"h\"));\n\tPRINTF((\"t%st%s\", \"a\", \"u\"));\n\tPRINTF((\"%s%s%s%s%s%s\", \"a\", \"i\", \"u\", \"e\", \"o\", \"l\"));\n\n\tright_cat = test_cat ? test_cat & (CAT_P | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%p basic\");\n\n\tint test = 42;\n\tPRINTF((\"%p\", &test));\n\tPRINTF((\"%p is a virtual memory address\", &test));\n\tPRINTF((\"The address of the answer is %p\", &test));\n\tPRINTF((\"The address is %p, so what?\", &test));\n\tint *ptr = &test;\n\tPRINTF((\"A pointer at %p points to %p\", &test, &ptr));\n\tPRINTF((\"This %p is a very strange address\", (void *)(long int)test));\n\n\tchar *mallocked = malloc(2);\n\tPRINTF((\"This %p is an address from the heap\", mallocked); free(mallocked);); free(mallocked);\n\tPRINTF((\"%p\", NULL));\n\tPRINTF((\"The NULL macro represents the %p address\", NULL));\n\tPRINTF((\"This %p is even stranger\", (void *)-1));\n\n\tright_cat = test_cat ? test_cat & (CAT_D | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%d basic\");\n\n\tPRINTF((\"%d\", 0));\n\tPRINTF((\"%d\", 10));\n\tPRINTF((\"%d, %d\", 10, 20));\n\tPRINTF((\"%d%d%d%d\", 10, 20, 30, 5));\n\tPRINTF((\"%d %d\", 2147483647, (int)-2147483648));\n\tPRINTF((\"42 - 84 is %d\", -42));\n\tPRINTF((\"%d C is the lowest temperature in the universe\", -273));\n\tPRINTF((\"%dxC is the lowest temperature in the universe\", -273));\n\tPRINTF((\"%dsC is the lowest temperature in the universe\", -273));\n\tPRINTF((\"%dpC is the lowest temperature in the universe\", -273));\n\n\tright_cat = test_cat ? test_cat & (CAT_I | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%i basic\");\n\n\tPRINTF((\"%i\", 0));\n\tPRINTF((\"%i\", 10));\n\tPRINTF((\"%i, %i\", 10, 23));\n\tPRINTF((\"%i%i%i%i%i%i%i\", 10, 23, -2, 37, 200, -9999, 977779));\n\tPRINTF((\"%i %i\", 2147483647, (int)-2147483648));\n\tPRINTF((\"%iq%i\", 21447, -21648));\n\n\tright_cat = test_cat ? test_cat & (CAT_U | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%u basic\");\n\n\tPRINTF((\"%u\", 42));\n\tPRINTF((\"%u\", 0));\n\tPRINTF((\"%u\", 2147483647));\n\tPRINTF((\"%u\", (unsigned int)2147483648));\n\tPRINTF((\"%u\", (unsigned int)3147983649));\n\tPRINTF((\"%u\", (unsigned int)4294967295));\n\tPRINTF((\"%u to the power of %u is %u\", 2, 32, (unsigned int)4294967295));\n\tPRINTF((\"%u%u%u%u\", (unsigned int)429896724, 0, 32, (unsigned int)4294967295));\n\n\tright_cat = test_cat ? test_cat & (CAT_X | CAT_MANDATORY ) : 1;\n\tdescribe(\"\\n%x basic\");\n\n\tPRINTF((\"%x\", 0));\n\tPRINTF((\"%x\", 1));\n\tPRINTF((\"%x\", 10));\n\tPRINTF((\"%x\", 16));\n\tPRINTF((\"%x\", 160));\n\tPRINTF((\"%x\", 255));\n\tPRINTF((\"%x\", 256));\n\tPRINTF((\"%x\", 3735929054u));\n\tPRINTF((\"the password is %x\", 3735929054u));\n\tPRINTF((\"%x is the definitive answer\", 66u));\n\tPRINTF((\"this is the real number: %x\", -1u));\n\n\tright_cat = test_cat ? test_cat & (CAT_BIG_X | CAT_MANDATORY ): 1;\n\tdescribe(\"\\n%X basic\");\n\n\tPRINTF((\"%X\", 0));\n\tPRINTF((\"%X\", 1));\n\tPRINTF((\"%X\", 10));\n\tPRINTF((\"%X\", 16));\n\tPRINTF((\"%X\", 160));\n\tPRINTF((\"%X\", 255));\n\tPRINTF((\"%X\", 256));\n\tPRINTF((\"%X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %X\", (unsigned int)3735929054));\n\tPRINTF((\"%X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %X\", (unsigned int)-1));\n\n\tright_cat = test_cat ? test_cat & (CAT_PERCENT | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%% basic\");\n\n\tPRINTF((\"%%\"));\n\tPRINTF((\"100%%\"));\n\tPRINTF((\"%%p is how you print a pointer in printf\"));\n\tPRINTF((\"the '%%%%' is used to print a %% in printf\"));\n\tPRINTF((\"%%%%%%%%%%%%%%%%\"));\n\tPRINTF((\"%%c%%s%%p%%d%%i%%u%%x%%X%%\"));\n\n\tright_cat = test_cat ? test_cat & CAT_MANDATORY : 1;\n\tdescribe(\"\\nmix\");\n\n\tPRINTF((\"%c - %s - %p %d - %i - %u - %x %X %%\", 'a', \"test\", (void *)0xdeadc0de, 20, -20, -1, -1, 200000000));\n\tPRINTF((\"%c - %s - %p %d - %i - %u - %x %X %%\", '\\0', \"test\", (void *)-1, 20, -20, -1, -1, 200000000));\n\tPRINTF((\"%c - %s - %p %d - %i - %u - %x %X %%\", 'c', \"\", (void *)-1, 20, -20, -1, -1, 200000000));\n\tPRINTF((\"%i - %s - %p %d - %c - %u - %x %X %%\", 20, \"\", (void *)-1, '\\0', -20, -1, -1, 200000000));\n\tPRINTF((\"%c - %s - %p %d - %i - %u - %x %X %%\", 'b', null_str, NULL, 20, -20, -1, -1, 200000000));\n\tPRINTF((\"%c %s - %p - %d - %i %u - %x - %X %%\", '\\0', null_str, (void *)0xdeadc0de, 0, (int)-2147483648, -1, -1, 200000000));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_C && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%c and widths\");\n\n\tPRINTF((\"%1c\", 'a'))\n\tPRINTF((\"%1c\", '\\0'))\n\tPRINTF((\"%10c\", 'b'))\n\tPRINTF((\"%10c\", '\\0'))\n\tPRINTF((\"%2c\", 'c'))\n\tPRINTF((\"there are 15 spaces between this text and the next char%15c\", 'd'))\n\tPRINTF((\"%5chis paragraph is indented\", 't'))\n\tPRINTF((\"%5c now you see\", '\\0'))\n\tPRINTF((\"The number %7c represents luck\", '7'))\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_S && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%s and widths\");\n\n\tPRINTF((\"%1s\", \"a\"));\n\tPRINTF((\"%1s\", \"abc\"));\n\tPRINTF((\"%7s\", \"a\"));\n\tPRINTF((\"%7s\", \"abc\"));\n\tPRINTF((\"%1s\", \"-42\"));\n\tPRINTF((\"%2s\", \"-42\"));\n\tPRINTF((\"%3s\", \"-42\"));\n\tPRINTF((\"%4s\", \"-42\"));\n\tPRINTF((\"%5s\", \"-42\"));\n\tPRINTF((\"%6s\", \"-42\"));\n\tPRINTF((\"%1s\", null_str));\n\tPRINTF((\"%2s\", null_str));\n\tPRINTF((\"%5s\", null_str));\n\tPRINTF((\"%6s\", null_str));\n\tPRINTF((\"%7s\", null_str));\n\tPRINTF((\"%7s is as easy as %13s\", \"abc\", \"123\"));\n\tPRINTF((\"%13s are the three first letter of the %3s\", \"a, b and c\", \"alphabet\"));\n\tPRINTF((\"%s%13s%42s%3s\", \"a, b and c\", \" are letters\", \" of the\", \" alphabet\"));\n\tPRINTF((\"%sc%13sd%42sp%3sx\", \"a, b and c\", \" are letters\", \" of the\", \" alphabet\"));\n\tPRINTF((\"%sc%13sd%42sp%3sx\", \"a, b and c\", \" are letters\", \" of the\", \" alphabet\"));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_P && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%p and widths\");\n\n\tchar c;\n\tPRINTF((\"%1p\", &c));\n\tPRINTF((\"%30p\", &c));\n\tPRINTF((\"%12p\", (void *)0x7ffe6b8e60c6));\n\tPRINTF((\"%13p\", (void *)0x7ffe6b8e60c5));\n\tPRINTF((\"%14p\", (void *)0x7ffe6b8e60c4));\n\tPRINTF((\"the address is %12p\", (void *)0x7ffe6b8e60c7));\n\tPRINTF((\"the address is %13p\", (void *)0x7ffe6b8e60c8));\n\tPRINTF((\"the address is %14p\", (void *)0x7ffe6b8e60c9));\n\tPRINTF((\"the address is %1p\", (void *)0));\n\tPRINTF((\"the address is %2p\", (void *)0));\n\tPRINTF((\"the address is %3p\", (void *)0));\n\tPRINTF((\"the address is %4p\", (void *)0));\n\tPRINTF((\"the address is %8p\", (void *)0));\n\tPRINTF((\"%12p is the address\", (void *)0x7ffe6b8e60c7));\n\tPRINTF((\"%13p is the address\", (void *)0x7ffe6b8e60c8));\n\tPRINTF((\"%14p is the address\", (void *)0x7ffe6b8e60c9));\n\tPRINTF((\"%1p is the address\", (void *)0));\n\tPRINTF((\"%2p is the address\", (void *)0));\n\tPRINTF((\"%3p is the address\", (void *)0));\n\tPRINTF((\"%4p is the address\", (void *)0));\n\tPRINTF((\"%8p is the address\", (void *)0));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and widths\");\n\n\tPRINTF((\"%1d\", 0));\n\tPRINTF((\"%1d\", -4));\n\tPRINTF((\"%10d\", 42));\n\tPRINTF((\"%42d\", 42000));\n\tPRINTF((\"%20d\", -42000));\n\tPRINTF((\"wait for it... %50d\", 42));\n\tPRINTF((\"%20d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%5d\", 2147483647));\n\tPRINTF((\"%30d\", 2147483647));\n\tPRINTF((\"%10d\", 2147483647));\n\tPRINTF((\"%5d\", (int)-2147483648));\n\tPRINTF((\"%30d\", (int)-2147483648));\n\tPRINTF((\"%10d\", (int)-2147483648));\n\tPRINTF((\"%11d\", (int)-2147483648));\n\tPRINTF((\"%12d\", (int)-2147483648));\n\tPRINTF((\"%12d, %20d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%12d, %d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14d%20d%2d%d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14dc%20ds%2dx%du\", (int)-2147483648, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%i and widths\");\n\n\tPRINTF((\"%1i\", 0));\n\tPRINTF((\"%1i\", -4));\n\tPRINTF((\"%10i\", 42));\n\tPRINTF((\"%42i\", 42000));\n\tPRINTF((\"%20i\", -42000));\n\tPRINTF((\"wait for it... %50i\", 42));\n\tPRINTF((\"%20i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%5i\", 2147483647));\n\tPRINTF((\"%30i\", 2147483647));\n\tPRINTF((\"%10i\", 2147483647));\n\tPRINTF((\"%5i\", (int)-2147483648));\n\tPRINTF((\"%30i\", (int)-2147483648));\n\tPRINTF((\"%10i\", (int)-2147483648));\n\tPRINTF((\"%11i\", (int)-2147483648));\n\tPRINTF((\"%12i\", (int)-2147483648));\n\tPRINTF((\"%12i, %20i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%12i, %i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14i%20i%2i%i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14ic%20is%2ix%du\", (int)-2147483648, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%u and widths\");\n\n\tPRINTF((\"%1u\", 0));\n\tPRINTF((\"%2u\", 1));\n\tPRINTF((\"%1u\", 1000));\n\tPRINTF((\"%4u\", 1000));\n\tPRINTF((\"%30u\", 1000));\n\tPRINTF((\"%9u is the biggest unsigned int\", (unsigned int)-1));\n\tPRINTF((\"%10uis the biggest unsigned int\", (unsigned int)-1));\n\tPRINTF((\"%11uis the biggest unsigned int\", (unsigned int)-1));\n\tPRINTF((\"the biggest unsigned int is %9u\", (unsigned int)-1));\n\tPRINTF((\"the biggest unsigned int is %10u\", (unsigned int)-1));\n\tPRINTF((\"the biggest unsigned int is %11u\", (unsigned int)-1));\n\tPRINTF((\"Here are some numbers: %1u%2u%5u%3u%9u and %ui\", 11, (unsigned int)-1, 2, 200, 3, 10));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%x and widths\");\n\n\tPRINTF((\"%1x\", 0));\n\tPRINTF((\"%2x\", 1));\n\tPRINTF((\"%3x\", 10));\n\tPRINTF((\"%1x\", 16));\n\tPRINTF((\"%2x\", 160));\n\tPRINTF((\"%3x\", 255));\n\tPRINTF((\"%42x\", 256));\n\tPRINTF((\"%7x\", (unsigned int)3735929054));\n\tPRINTF((\"%8x\", (unsigned int)3735929054));\n\tPRINTF((\"%9x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %7x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %8x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %9x\", (unsigned int)3735929054));\n\tPRINTF((\"%1x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%2x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%3x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %7x\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %8x\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %9x\", (unsigned int)-1));\n\tPRINTF((\"%1x%2x%9x\", (unsigned int)-1, 0xf0ca, 123456));\n\tPRINTF((\"%1xis doomed%2xpost%9xX args\", (unsigned int)-1, 0xf0b1a, 7654321));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%X and widths\");\n\n\tPRINTF((\"%1X\", 0));\n\tPRINTF((\"%2X\", 1));\n\tPRINTF((\"%3X\", 10));\n\tPRINTF((\"%1X\", 16));\n\tPRINTF((\"%2X\", 160));\n\tPRINTF((\"%3X\", 255));\n\tPRINTF((\"%42X\", 256));\n\tPRINTF((\"%7X\", (unsigned int)3735929054));\n\tPRINTF((\"%8X\", (unsigned int)3735929054));\n\tPRINTF((\"%9X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %7X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %8X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %9X\", (unsigned int)3735929054));\n\tPRINTF((\"%1X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%2X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%3X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %7X\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %8X\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %9X\", (unsigned int)-1));\n\tPRINTF((\"%1X%2X%9X\", (unsigned int)-1, 0xf0ca, 123456));\n\tPRINTF((\"%1Xis doomed%2Xpost%9Xx args\", (unsigned int)-1, 0xf0b1a, 7654321));\n\n\tdescribe(\"\\n%s and precisions\");\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_S && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tPRINTF((\"%.s\", \"hi there\"));\n\tPRINTF((\"%.0s\", \"hi there\"));\n\tPRINTF((\"%.1s\", \"hi there\"));\n\tPRINTF((\"%.2s\", \"hi there\"));\n\tPRINTF((\"%.3s\", \"hi there\"));\n\tPRINTF((\"%.4s\", \"hi there\"));\n\tPRINTF((\"%.7s\", \"hi there\"));\n\tPRINTF((\"%.8s\", \"hi there\"));\n\tPRINTF((\"%.9s\", \"hi there\"));\n\tPRINTF((\"%.12s\", \"hi there\"));\n\tPRINTF((\"%.s\", \"-42\"));\n\tPRINTF((\"%.0s\", \"-42\"));\n\tPRINTF((\"%.1s\", \"-42\"));\n\tPRINTF((\"%.2s\", \"-42\"));\n\tPRINTF((\"%.3s\", \"-42\"));\n\tPRINTF((\"%.4s\", \"-42\"));\n\tPRINTF((\"%.7s\", \"-42\"));\n\tPRINTF((\"%.1s\", null_str));\n\tPRINTF((\"%.2s\", null_str));\n\tPRINTF((\"%.5s\", null_str));\n\tPRINTF((\"%.6s\", null_str));\n\tPRINTF((\"%.7s\", null_str));\n\tPRINTF((\"%.2s, motherfucker\", \"hi there\"));\n\tPRINTF((\"This %.3s a triumph \", \"wasabi\"));\n\tPRINTF((\"%.4s making a %.4s here: %.13s\", \"I'm delighted\", \"notation\", \"HUGE SUCCESS!\"));\n\tPRINTF((\"It's %.4s to over%.50s my%s\", \"hardware\", \"state\", \" satisfaction\"));\n\tPRINTF((\"%.11s%.6s%.4s\", \"Aperture\", \" Scientists\", \"ce\"));\n\tPRINTF((\"%1.s\", \"21-school.ru\")); //Rustem (bnidia)\n\tPRINTF((\"%10.1s\", \"21-school.ru\")); //Rustem (bnidia)\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and precisions\");\n\n\tPRINTF((\"%.1d\", 2))\n\tPRINTF((\"%.2d\", 3))\n\tPRINTF((\"%.4d\", 32))\n\tPRINTF((\"%.3d\", 420000))\n\tPRINTF((\"%.0d\", 420000))\n\tPRINTF((\"%.3d\", -1))\n\tPRINTF((\"%.3d\", -1234))\n\tPRINTF((\"%.4d\", -1234))\n\tPRINTF((\"%.5d\", -1234))\n\tPRINTF((\"%.5d\", (int)-2147483648))\n\tPRINTF((\"%.9d\", (int)-2147483648))\n\tPRINTF((\"%.10d\", (int)-2147483648))\n\tPRINTF((\"%.11d\", (int)-2147483648))\n\tPRINTF((\"%.12d\", (int)-2147483648))\n\tPRINTF((\"%.13d\", (int)-2147483648))\n\tPRINTF((\"%.5d\", 2147483647))\n\tPRINTF((\"%.9d\", 2147483647))\n\tPRINTF((\"%.10d\", 2147483647))\n\tPRINTF((\"%.11d\", 2147483647))\n\tPRINTF((\"%.12d\", 2147483647))\n\tPRINTF((\"%.0d\", 2))\n\tPRINTF((\"%.0d\", 2147483647))\n\tPRINTF((\"%.0d\", 0))\n\tPRINTF((\"%.0d\", 10))\n\tPRINTF((\"%.d\", 10))\n\tPRINTF((\"%.d\", 0))\n\tPRINTF((\"I'm gonna watch %.3d\", 7))\n\tPRINTF((\"%.3d is the movie I'm gonna watch\", 7))\n\tPRINTF((\"Then take these %.7d things and get the hell out of here\", 2))\n\tPRINTF((\"Bla %.2di bla %.5dsbla bla %.dx bla %.d\", 127, 42, 1023, 0))\n\tPRINTF((\"%.4d%.2d%.20d%.0d%.0d%.d%.d%.d\", 127, 0, 1023, 0, (int)-2147483648, 0, 1, (int)-2147483648))\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%i and precisions\");\n\n\tPRINTF((\"%.1i\", 7))\n\tPRINTF((\"%.3i\", 7))\n\tPRINTF((\"%.2i\", 3))\n\tPRINTF((\"%.4i\", 32))\n\tPRINTF((\"%.3i\", 420000))\n\tPRINTF((\"%.0i\", 420000))\n\tPRINTF((\"%.3i\", -1))\n\tPRINTF((\"%.3i\", -1234))\n\tPRINTF((\"%.4i\", -1234))\n\tPRINTF((\"%.5i\", -1234))\n\tPRINTF((\"%.5i\", (int)-2147483648))\n\tPRINTF((\"%.9i\", (int)-2147483648))\n\tPRINTF((\"%.10i\", (int)-2147483648))\n\tPRINTF((\"%.11i\", (int)-2147483648))\n\tPRINTF((\"%.12i\", (int)-2147483648))\n\tPRINTF((\"%.13i\", (int)-2147483648))\n\tPRINTF((\"%.5i\", 2147483647))\n\tPRINTF((\"%.9i\", 2147483647))\n\tPRINTF((\"%.10i\", 2147483647))\n\tPRINTF((\"%.11i\", 2147483647))\n\tPRINTF((\"%.12i\", 2147483647))\n\tPRINTF((\"%.0i\", 2))\n\tPRINTF((\"%.0i\", 2147483647))\n\tPRINTF((\"%.0i\", 0))\n\tPRINTF((\"%.0i\", 10))\n\tPRINTF((\"%.i\", 10))\n\tPRINTF((\"%.i\", 0))\n\tPRINTF((\"I'm gonna watch %.3i\", 7))\n\tPRINTF((\"%.3i is the movie I'm gonna watch\", 7))\n\tPRINTF((\"Then take these %.7i things and get the hell out of here\", 2))\n\tPRINTF((\"Bla %.2ii bla %.5isbla bla %.ix bla %.i\", 127, 42, 1023, 0))\n\tPRINTF((\"%.4i%.2i%.20i%.0i%.0i%.i%.i%.i\", 127, 0, 1023, 0, (int)-2147483648, 0, 1, (int)-2147483648))\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%u and precisions\");\n\n\tPRINTF((\"%.1u\", 1))\n\tPRINTF((\"%.2u\", 1))\n\tPRINTF((\"%.2u\", 0))\n\tPRINTF((\"%.0u\", 0))\n\tPRINTF((\"%.u\", 0))\n\tPRINTF((\"%.2u\", 30000))\n\tPRINTF((\"%.20u\", 30000))\n\tPRINTF((\"%.0u\", (unsigned int)-1))\n\tPRINTF((\"%.5u\", (unsigned int)-1))\n\tPRINTF((\"%.9u\", (unsigned int)-1))\n\tPRINTF((\"%.10u\", (unsigned int)-1))\n\tPRINTF((\"%.11u\", (unsigned int)-1))\n\tPRINTF((\"%.10uis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.0uis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.4us a big number\", (unsigned int)-1))\n\tPRINTF((\"%.9uxs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.11ups a big number\", (unsigned int)-1))\n\tPRINTF((\"the number is %.0u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.5u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.9u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.10u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11u\", (unsigned int)-1))\n\tPRINTF((\"%.0uis a big number\", 0))\n\tPRINTF((\"%.4us a big number\", 0))\n\tPRINTF((\"the number is %.0u\", 0))\n\tPRINTF((\"the number is %.u\", 0))\n\tPRINTF((\"the number is %.5u\", 0))\n\tPRINTF((\"%u%.5u%.0u%.u%.9u\", 5, 55, 2, 0, 42))\n\tPRINTF((\"%us%.5ui%.0uc%.up%.9ux\", 5, 55, 2, 0, 42))\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%x and precisions\");\n\n\tPRINTF((\"%.1x\", 0xa))\n\tPRINTF((\"%.4x\", 11))\n\tPRINTF((\"%.0x\", 0))\n\tPRINTF((\"%.1x\", -1))\n\tPRINTF((\"%.10x\", -1))\n\tPRINTF((\"%.14x\", -1))\n\tPRINTF((\"%.8x\", 0))\n\tPRINTF((\"%.2x\", 30000))\n\tPRINTF((\"%.20x\", 30000))\n\tPRINTF((\"%.0x\", (unsigned int)-1))\n\tPRINTF((\"%.5x\", (unsigned int)-1))\n\tPRINTF((\"%.9x\", (unsigned int)-1))\n\tPRINTF((\"%.10x\", (unsigned int)-1))\n\tPRINTF((\"%.11x\", (unsigned int)-1))\n\tPRINTF((\"%.10xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.0xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.4xs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.9xxs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.11xps a big number\", (unsigned int)-1))\n\tPRINTF((\"the number is %.0x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.5x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.9x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.10x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11x\", (unsigned int)-1))\n\tPRINTF((\"%.0xis a big number\", 0))\n\tPRINTF((\"%.4xs a big number\", 0))\n\tPRINTF((\"the number is %.0x\", 0))\n\tPRINTF((\"the number is %.x\", 0))\n\tPRINTF((\"the number is %.5x\", 0))\n\tPRINTF((\"%x%.5x%.0x%.x%.9x\", 5, 55, 2, 0, 42))\n\tPRINTF((\"%xs%.5xi%.0xc%.xp%.9xu\", 5, 55, 2, 0, 42))\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%X and precisions\");\n\n\tPRINTF((\"%.1X\", 0xa))\n\tPRINTF((\"%.4X\", 11))\n\tPRINTF((\"%.0X\", 0))\n\tPRINTF((\"%.1X\", -1))\n\tPRINTF((\"%.10X\", -1))\n\tPRINTF((\"%.14X\", -1))\n\tPRINTF((\"%.8X\", 0))\n\tPRINTF((\"%.2X\", 30000))\n\tPRINTF((\"%.20X\", 30000))\n\tPRINTF((\"%.0X\", (unsigned int)-1))\n\tPRINTF((\"%.5X\", (unsigned int)-1))\n\tPRINTF((\"%.9X\", (unsigned int)-1))\n\tPRINTF((\"%.10X\", (unsigned int)-1))\n\tPRINTF((\"%.11X\", (unsigned int)-1))\n\tPRINTF((\"%.10Xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.0Xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.4Xs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.9XXs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.11Xps a big number\", (unsigned int)-1))\n\tPRINTF((\"the number is %.0X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.5X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.9X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.10X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11X\", (unsigned int)-1))\n\tPRINTF((\"%.0Xis a big number\", 0))\n\tPRINTF((\"%.4Xs a big number\", 0))\n\tPRINTF((\"the number is %.0X\", 0))\n\tPRINTF((\"the number is %.X\", 0))\n\tPRINTF((\"the number is %.5X\", 0))\n\tPRINTF((\"%X%.5X%.0X%.X%.9X\", 5, 55, 2, 0, 42))\n\tPRINTF((\"%Xs%.5Xi%.0Xc%.Xp%.9Xu\", 5, 55, 2, 0, 42))\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_C && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%c, widths and -\");\n\n\t// this is literally a negative width '-'\n\tPRINTF((\"%-c\", 'p'));\n\tPRINTF((\"%-1c\", 'b'));\n\tPRINTF((\"%-5c\", 'w'));\n\tPRINTF((\" kk daora%-5cblz\", 'w'));\n\tPRINTF((\"%-20carigatou\", 'w'));\n\tPRINTF((\"%-c%-c%-4c%-11c\", 'a', 'b', 'c', 'd'));\n\tPRINTF((\"%-ci%-cp%4cs%-11cx\", 'a', 'b', 'c', 'd'));\n\tPRINTF((\"%----ci%---cp%4cs%--11cx\", 'a', 'b', 'c', 'd'));\n\tPRINTF((\"%-c%-c%c*\", 0, '1', 1));\n\tPRINTF((\"%-2c%-3c%-4c*\", 0, 'a', 0));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_S && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%s, widths, precisions and -\");\n\n\tPRINTF((\"%-9sScience!\", \"Aperture\"));\n\tPRINTF((\"We %-s what we %8s, %-2s we %-20s\", \"do\", \"must\", \"because\", \"can\"));\n\tPRINTF((\"%--4s %s %------------------9s of %s of %-5s\", \"for\", \"the\", \"goooood\", \"aaall\", \"us\"));\n\tPRINTF((\"%--4.1s %s %------------------9.3s of %s of %-5.7s\", \"for\", \"the\", \"goooood\", \"aaall\", \"us\"));\n\tPRINTF((\"%--.sp--.su kkkk\", \"pegadinha po\"));\n\tPRINTF((\"%-9sScience!\", \"-42\"));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_P && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%p, widths and -\");\n\n\tPRINTF((\"that's the way it %-20pis\", \"\"));\n\tPRINTF((\"as soon as %-10possible\", (void *) -1));\n\tPRINTF((\"as soon as %-16peasible\", (void *) (((long int)3 << 42) + 15)));\n\tPRINTF((\"as soon as %-16peasible\", (void *) (((long int)3 << 42) + 15)));\n\tPRINTF((\"thats %-psrobably not a good idea\", (void *) 13));\n\tPRINTF((\"%------21pwhoa wtf is that\", (void *) 13));\n\tPRINTF((\"%------21p yeah i'm %p running out %--p of ideas\", (void *) 13, (void *) 65, (void *) -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and -\");\n\n\tPRINTF((\"%-d\", 0));\n\tPRINTF((\"%-d\", 1));\n\tPRINTF((\"%-d\", 10));\n\tPRINTF((\"%-d\", -10));\n\tPRINTF((\"%-d\", 5000));\n\tPRINTF((\"%-d\", -5000));\n\tPRINTF((\"%-d\", (int)-2147483648));\n\tPRINTF((\"%-d\", 2147483647));\n\tPRINTF((\"%-1d\", 0));\n\tPRINTF((\"%-1d\", 1));\n\tPRINTF((\"%-1d\", 10));\n\tPRINTF((\"%-1d\", -10));\n\tPRINTF((\"%-1d\", 5000));\n\tPRINTF((\"%-1d\", -5000));\n\tPRINTF((\"%-1d\", (int)-2147483648));\n\tPRINTF((\"%-1d\", 2147483647));\n\tPRINTF((\"%-10d\", 0));\n\tPRINTF((\"%-10d\", 1));\n\tPRINTF((\"%-10d\", 10));\n\tPRINTF((\"%-10d\", -10));\n\tPRINTF((\"%-10d\", 5000));\n\tPRINTF((\"%-10d\", -5000));\n\tPRINTF((\"%-10d\", (int)-2147483648));\n\tPRINTF((\"%-10d\", 2147483647));\n\tPRINTF((\"%-.d\", 0));\n\tPRINTF((\"%-.1d\", 1));\n\tPRINTF((\"%-.2d\", 10));\n\tPRINTF((\"%-.3d\", -10));\n\tPRINTF((\"%-.4d\", 5000));\n\tPRINTF((\"%-.5d\", -5000));\n\tPRINTF((\"%-.6d\", (int)-2147483648));\n\tPRINTF((\"%-.7d\", 2147483647));\n\tPRINTF((\"%-1.8d\", 0));\n\tPRINTF((\"%-1.9d\", 1));\n\tPRINTF((\"%-1.10d\", 10));\n\tPRINTF((\"%-1.0d\", -10));\n\tPRINTF((\"%-1.6d\", 5000));\n\tPRINTF((\"%-1.4d\", -5000));\n\tPRINTF((\"%-1.10d\", (int)-2147483648));\n\tPRINTF((\"%-1.12d\", 2147483647));\n\tPRINTF((\"%-10.d\", 0));\n\tPRINTF((\"%-10.10d\", 1));\n\tPRINTF((\"%-10.5d\", 10));\n\tPRINTF((\"%-10.2d\", -10));\n\tPRINTF((\"%-10.5d\", 5000));\n\tPRINTF((\"%-10.5d\", -5000));\n\tPRINTF((\"%-10.15d\", (int)-2147483648));\n\tPRINTF((\"%-10.5d\", 2147483647));\n\tPRINTF((\"%-15.d\", 0));\n\tPRINTF((\"%-15.10d\", 1));\n\tPRINTF((\"%-15.5d\", 10));\n\tPRINTF((\"%-15.2d\", -10));\n\tPRINTF((\"%-15.5d\", 5000));\n\tPRINTF((\"%-15.5d\", -5000));\n\tPRINTF((\"%-15.15d\", (int)-2147483648));\n\tPRINTF((\"%-15.5d\", 2147483647));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", (int)-2147483648, (int)-2141483648, (int)-2141483648, (int)-2141483648, (int)-2141483648));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%i, widths, precisions and -\");\n\n\tPRINTF((\"%-i\", 0));\n\tPRINTF((\"%-i\", 1));\n\tPRINTF((\"%-i\", 10));\n\tPRINTF((\"%-i\", -10));\n\tPRINTF((\"%-i\", 5000));\n\tPRINTF((\"%-i\", -5000));\n\tPRINTF((\"%-i\", (int)-2147483648));\n\tPRINTF((\"%-i\", 2147483647));\n\tPRINTF((\"%-1i\", 0));\n\tPRINTF((\"%-1i\", 1));\n\tPRINTF((\"%-1i\", 10));\n\tPRINTF((\"%-1i\", -10));\n\tPRINTF((\"%-1i\", 5000));\n\tPRINTF((\"%-1i\", -5000));\n\tPRINTF((\"%-1i\", (int)-2147483648));\n\tPRINTF((\"%-1i\", 2147483647));\n\tPRINTF((\"%-10i\", 0));\n\tPRINTF((\"%-10i\", 1));\n\tPRINTF((\"%-10i\", 10));\n\tPRINTF((\"%-10i\", -10));\n\tPRINTF((\"%-10i\", 5000));\n\tPRINTF((\"%-10i\", -5000));\n\tPRINTF((\"%-10i\", (int)-2147483648));\n\tPRINTF((\"%-10i\", 2147483647));\n\tPRINTF((\"%-.i\", 0));\n\tPRINTF((\"%-.1i\", 1));\n\tPRINTF((\"%-.2i\", 10));\n\tPRINTF((\"%-.3i\", -10));\n\tPRINTF((\"%-.4i\", 5000));\n\tPRINTF((\"%-.5i\", -5000));\n\tPRINTF((\"%-.6i\", (int)-2147483648));\n\tPRINTF((\"%-.7i\", 2147483647));\n\tPRINTF((\"%-1.8i\", 0));\n\tPRINTF((\"%-1.9i\", 1));\n\tPRINTF((\"%-1.10i\", 10));\n\tPRINTF((\"%-1.0i\", -10));\n\tPRINTF((\"%-1.6i\", 5000));\n\tPRINTF((\"%-1.4i\", -5000));\n\tPRINTF((\"%-1.10i\", (int)-2147483648));\n\tPRINTF((\"%-1.12i\", 2147483647));\n\tPRINTF((\"%-10.i\", 0));\n\tPRINTF((\"%-10.10i\", 1));\n\tPRINTF((\"%-10.5i\", 10));\n\tPRINTF((\"%-10.2i\", -10));\n\tPRINTF((\"%-10.5i\", 5000));\n\tPRINTF((\"%-10.5i\", -5000));\n\tPRINTF((\"%-10.15i\", (int)-2147483648));\n\tPRINTF((\"%-10.5i\", 2147483647));\n\tPRINTF((\"%-15.i\", 0));\n\tPRINTF((\"%-15.10i\", 1));\n\tPRINTF((\"%-15.5i\", 10));\n\tPRINTF((\"%-15.2i\", -10));\n\tPRINTF((\"%-15.5i\", 5000));\n\tPRINTF((\"%-15.5i\", -5000));\n\tPRINTF((\"%-15.15i\", (int)-2147483648));\n\tPRINTF((\"%-15.5i\", 2147483647));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", (int)-2147483648, (int)-2141483648, (int)-2141483648, (int)-2141483648, (int)-2141483648));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%u, widths, precisions and -\");\n\n\tPRINTF((\"%-u\", 0));\n\tPRINTF((\"%-u\", 1));\n\tPRINTF((\"%-u\", 10));\n\tPRINTF((\"%-u\", -10));\n\tPRINTF((\"%-u\", 5000));\n\tPRINTF((\"%-u\", -5000));\n\tPRINTF((\"%-u\", (unsigned int)-1));\n\tPRINTF((\"%-u\", 2147483647));\n\tPRINTF((\"%-1u\", 0));\n\tPRINTF((\"%-1u\", 1));\n\tPRINTF((\"%-1u\", 10));\n\tPRINTF((\"%-1u\", -10));\n\tPRINTF((\"%-1u\", 5000));\n\tPRINTF((\"%-1u\", -5000));\n\tPRINTF((\"%-1u\", (unsigned int)-1));\n\tPRINTF((\"%-1u\", 2147483647));\n\tPRINTF((\"%-10u\", 0));\n\tPRINTF((\"%-10u\", 1));\n\tPRINTF((\"%-10u\", 10));\n\tPRINTF((\"%-10u\", -10));\n\tPRINTF((\"%-10u\", 5000));\n\tPRINTF((\"%-10u\", -5000));\n\tPRINTF((\"%-10u\", -1));\n\tPRINTF((\"%-10u\", 2147483647));\n\tPRINTF((\"%-.u\", 0));\n\tPRINTF((\"%-.1u\", 1));\n\tPRINTF((\"%-.2u\", 10));\n\tPRINTF((\"%-.3u\", -10));\n\tPRINTF((\"%-.4u\", 5000));\n\tPRINTF((\"%-.5u\", -5000));\n\tPRINTF((\"%-.6u\", -1));\n\tPRINTF((\"%-.7u\", 2147483647));\n\tPRINTF((\"%-1.8u\", 0));\n\tPRINTF((\"%-1.9u\", 1));\n\tPRINTF((\"%-1.10u\", 10));\n\tPRINTF((\"%-1.0u\", -10));\n\tPRINTF((\"%-1.6u\", 5000));\n\tPRINTF((\"%-1.4u\", -5000));\n\tPRINTF((\"%-1.10u\", -1));\n\tPRINTF((\"%-1.12u\", 2147483647));\n\tPRINTF((\"%-10.u\", 0));\n\tPRINTF((\"%-10.10u\", 1));\n\tPRINTF((\"%-10.5u\", 10));\n\tPRINTF((\"%-10.2u\", -10));\n\tPRINTF((\"%-10.5u\", 5000));\n\tPRINTF((\"%-10.5u\", -5000));\n\tPRINTF((\"%-10.15u\", -1));\n\tPRINTF((\"%-10.5u\", 2147483647));\n\tPRINTF((\"%-15.u\", 0));\n\tPRINTF((\"%-15.10u\", 1));\n\tPRINTF((\"%-15.5u\", 10));\n\tPRINTF((\"%-15.2u\", -10));\n\tPRINTF((\"%-15.5u\", 5000));\n\tPRINTF((\"%-15.5u\", -5000));\n\tPRINTF((\"%-15.15u\", -1));\n\tPRINTF((\"%-15.5u\", 2147483647));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", -1, -1, -1, -1, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions and -\");\n\n\tPRINTF((\"%-x\", 0));\n\tPRINTF((\"%-x\", 1));\n\tPRINTF((\"%-x\", 10));\n\tPRINTF((\"%-x\", -10));\n\tPRINTF((\"%-x\", 5000));\n\tPRINTF((\"%-x\", -5000));\n\tPRINTF((\"%-x\", -1));\n\tPRINTF((\"%-x\", 2147483647));\n\tPRINTF((\"%-1x\", 0));\n\tPRINTF((\"%-1x\", 1));\n\tPRINTF((\"%-1x\", 10));\n\tPRINTF((\"%-1x\", -10));\n\tPRINTF((\"%-1x\", 5000));\n\tPRINTF((\"%-1x\", -5000));\n\tPRINTF((\"%-1x\", -1));\n\tPRINTF((\"%-1x\", 2147483647));\n\tPRINTF((\"%-10x\", 0));\n\tPRINTF((\"%-10x\", 1));\n\tPRINTF((\"%-10x\", 10));\n\tPRINTF((\"%-10x\", -10));\n\tPRINTF((\"%-10x\", 5000));\n\tPRINTF((\"%-10x\", -5000));\n\tPRINTF((\"%-10x\", -1));\n\tPRINTF((\"%-10x\", 2147483647));\n\tPRINTF((\"%-.x\", 0));\n\tPRINTF((\"%-.1x\", 1));\n\tPRINTF((\"%-.2x\", 10));\n\tPRINTF((\"%-.3x\", -10));\n\tPRINTF((\"%-.4x\", 5000));\n\tPRINTF((\"%-.5x\", -5000));\n\tPRINTF((\"%-.6x\", -1));\n\tPRINTF((\"%-.7x\", 2147483647));\n\tPRINTF((\"%-1.8x\", 0));\n\tPRINTF((\"%-1.9x\", 1));\n\tPRINTF((\"%-1.10x\", 10));\n\tPRINTF((\"%-1.0x\", -10));\n\tPRINTF((\"%-1.6x\", 5000));\n\tPRINTF((\"%-1.4x\", -5000));\n\tPRINTF((\"%-1.10x\", -1));\n\tPRINTF((\"%-1.12x\", 2147483647));\n\tPRINTF((\"%-10.x\", 0));\n\tPRINTF((\"%-10.10x\", 1));\n\tPRINTF((\"%-10.5x\", 10));\n\tPRINTF((\"%-10.2x\", -10));\n\tPRINTF((\"%-10.5x\", 5000));\n\tPRINTF((\"%-10.5x\", -5000));\n\tPRINTF((\"%-10.15x\", -1));\n\tPRINTF((\"%-10.5x\", 2147483647));\n\tPRINTF((\"%-15.x\", 0));\n\tPRINTF((\"%-15.10x\", 1));\n\tPRINTF((\"%-15.5x\", 10));\n\tPRINTF((\"%-15.2x\", -10));\n\tPRINTF((\"%-15.5x\", 5000));\n\tPRINTF((\"%-15.5x\", -5000));\n\tPRINTF((\"%-15.15x\", -1));\n\tPRINTF((\"%-15.5x\", 2147483647));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", -1, -1, -1, -1, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions and -\");\n\n\tPRINTF((\"%-X\", 0));\n\tPRINTF((\"%-X\", 1));\n\tPRINTF((\"%-X\", 10));\n\tPRINTF((\"%-X\", -10));\n\tPRINTF((\"%-X\", 5000));\n\tPRINTF((\"%-X\", -5000));\n\tPRINTF((\"%-X\", -1));\n\tPRINTF((\"%-X\", 2147483647));\n\tPRINTF((\"%-1X\", 0));\n\tPRINTF((\"%-1X\", 1));\n\tPRINTF((\"%-1X\", 10));\n\tPRINTF((\"%-1X\", -10));\n\tPRINTF((\"%-1X\", 5000));\n\tPRINTF((\"%-1X\", -5000));\n\tPRINTF((\"%-1X\", -1));\n\tPRINTF((\"%-1X\", 2147483647));\n\tPRINTF((\"%-10X\", 0));\n\tPRINTF((\"%-10X\", 1));\n\tPRINTF((\"%-10X\", 10));\n\tPRINTF((\"%-10X\", -10));\n\tPRINTF((\"%-10X\", 5000));\n\tPRINTF((\"%-10X\", -5000));\n\tPRINTF((\"%-10X\", -1));\n\tPRINTF((\"%-10X\", 2147483647));\n\tPRINTF((\"%-.X\", 0));\n\tPRINTF((\"%-.1X\", 1));\n\tPRINTF((\"%-.2X\", 10));\n\tPRINTF((\"%-.3X\", -10));\n\tPRINTF((\"%-.4X\", 5000));\n\tPRINTF((\"%-.5X\", -5000));\n\tPRINTF((\"%-.6X\", -1));\n\tPRINTF((\"%-.7X\", 2147483647));\n\tPRINTF((\"%-1.8X\", 0));\n\tPRINTF((\"%-1.9X\", 1));\n\tPRINTF((\"%-1.10X\", 10));\n\tPRINTF((\"%-1.0X\", -10));\n\tPRINTF((\"%-1.6X\", 5000));\n\tPRINTF((\"%-1.4X\", -5000));\n\tPRINTF((\"%-1.10X\", -1));\n\tPRINTF((\"%-1.12X\", 2147483647));\n\tPRINTF((\"%-10.X\", 0));\n\tPRINTF((\"%-10.10X\", 1));\n\tPRINTF((\"%-10.5X\", 10));\n\tPRINTF((\"%-10.2X\", -10));\n\tPRINTF((\"%-10.5X\", 5000));\n\tPRINTF((\"%-10.5X\", -5000));\n\tPRINTF((\"%-10.15X\", -1));\n\tPRINTF((\"%-10.5X\", 2147483647));\n\tPRINTF((\"%-15.X\", 0));\n\tPRINTF((\"%-15.10X\", 1));\n\tPRINTF((\"%-15.5X\", 10));\n\tPRINTF((\"%-15.2X\", -10));\n\tPRINTF((\"%-15.5X\", 5000));\n\tPRINTF((\"%-15.5X\", -5000));\n\tPRINTF((\"%-15.15X\", -1));\n\tPRINTF((\"%-15.5X\", 2147483647));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", -1, -1, -1, -1, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and 0\");\n\n\tPRINTF((\"%01d\", 0));\n\tPRINTF((\"%01d\", -4));\n\tPRINTF((\"%010d\", 42));\n\tPRINTF((\"%042d\", 42000));\n\tPRINTF((\"%020d\", -42000));\n\tPRINTF((\"wait for it... %050d\", 42));\n\tPRINTF((\"%020d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05d\", 2147483647));\n\tPRINTF((\"%030d\", 2147483647));\n\tPRINTF((\"%010d\", 2147483647));\n\tPRINTF((\"%05d\", (int)-2147483648));\n\tPRINTF((\"%030d\", (int)-2147483648));\n\tPRINTF((\"%010d\", (int)-2147483648));\n\tPRINTF((\"%011d\", (int)-2147483648));\n\tPRINTF((\"%012d\", (int)-2147483648));\n\tPRINTF((\"%012d, %20d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012d, %d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014d%020d%02d%0d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014dc%020ds%02dx%0du\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%01.d\", 0));\n\tPRINTF((\"%01.0d\", 0));\n\tPRINTF((\"%02.0d\", 0));\n\tPRINTF((\"%03.0d\", 0));\n\tPRINTF((\"%01.1d\", 0));\n\tPRINTF((\"%01.2d\", 0));\n\tPRINTF((\"%01.3d\", 0));\n\tPRINTF((\"%01.0d\", -4));\n\tPRINTF((\"%01.1d\", -4));\n\tPRINTF((\"%01.2d\", -4));\n\tPRINTF((\"%01.3d\", -4));\n\tPRINTF((\"%01.0d\", 4));\n\tPRINTF((\"%01.1d\", 4));\n\tPRINTF((\"%01.2d\", 4));\n\tPRINTF((\"%01.3d\", 4));\n\tPRINTF((\"%010.20d\", 42));\n\tPRINTF((\"%042.2d\", 42000));\n\tPRINTF((\"%042.20d\", 42000));\n\tPRINTF((\"%042.42d\", 42000));\n\tPRINTF((\"%042.52d\", 42000));\n\tPRINTF((\"%020.10d\", -42000));\n\tPRINTF((\"%020.20d\", -42000));\n\tPRINTF((\"%020.30d\", -42000));\n\tPRINTF((\"wait for it... %050.50d\", 42));\n\tPRINTF((\"%020.19d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05d\", 2147483647));\n\tPRINTF((\"%030d\", 2147483647));\n\tPRINTF((\"%09d\", 2147483647));\n\tPRINTF((\"%010d\", 2147483647));\n\tPRINTF((\"%011d\", 2147483647));\n\tPRINTF((\"%05d\", (int)-2147483648));\n\tPRINTF((\"%030d\", (int)-2147483648));\n\tPRINTF((\"%010d\", (int)-2147483648));\n\tPRINTF((\"%011d\", (int)-2147483648));\n\tPRINTF((\"%012d\", (int)-2147483648));\n\tPRINTF((\"%012d, %20d, %2d, %000042d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012d, %d, %002d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%0014.2d%020d%0002.d%000.5d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014dc%020ds%02dx%0du\", (int)-2147483648, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%i, widths, precisions and 0\");\n\n\tPRINTF((\"%01i\", 0));\n\tPRINTF((\"%01i\", -4));\n\tPRINTF((\"%010i\", 42));\n\tPRINTF((\"%042i\", 42000));\n\tPRINTF((\"%020i\", -42000));\n\tPRINTF((\"wait for it... %050i\", 42));\n\tPRINTF((\"%020i is how many tests are going to be maie\", 8000));\n\tPRINTF((\"%05i\", 2147483647));\n\tPRINTF((\"%030i\", 2147483647));\n\tPRINTF((\"%010i\", 2147483647));\n\tPRINTF((\"%05i\", (int)-2147483648));\n\tPRINTF((\"%030i\", (int)-2147483648));\n\tPRINTF((\"%010i\", (int)-2147483648));\n\tPRINTF((\"%011i\", (int)-2147483648));\n\tPRINTF((\"%012i\", (int)-2147483648));\n\tPRINTF((\"%012i, %20i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012i, %i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014i%020i%02i%0i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014ic%020is%02ix%0iu\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%01.i\", 0));\n\tPRINTF((\"%01.0i\", 0));\n\tPRINTF((\"%02.0i\", 0));\n\tPRINTF((\"%03.0i\", 0));\n\tPRINTF((\"%01.1i\", 0));\n\tPRINTF((\"%01.2i\", 0));\n\tPRINTF((\"%01.3i\", 0));\n\tPRINTF((\"%01.0i\", -4));\n\tPRINTF((\"%01.1i\", -4));\n\tPRINTF((\"%01.2i\", -4));\n\tPRINTF((\"%01.3i\", -4));\n\tPRINTF((\"%01.0i\", 4));\n\tPRINTF((\"%01.1i\", 4));\n\tPRINTF((\"%01.2i\", 4));\n\tPRINTF((\"%01.3i\", 4));\n\tPRINTF((\"%010.20i\", 42));\n\tPRINTF((\"%042.2i\", 42000));\n\tPRINTF((\"%042.20i\", 42000));\n\tPRINTF((\"%042.42i\", 42000));\n\tPRINTF((\"%042.52i\", 42000));\n\tPRINTF((\"%020.10i\", -42000));\n\tPRINTF((\"%020.20i\", -42000));\n\tPRINTF((\"%020.30i\", -42000));\n\tPRINTF((\"wait for it... %050.50i\", 42));\n\tPRINTF((\"%020.19i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05i\", 2147483647));\n\tPRINTF((\"%030i\", 2147483647));\n\tPRINTF((\"%09i\", 2147483647));\n\tPRINTF((\"%010i\", 2147483647));\n\tPRINTF((\"%011i\", 2147483647));\n\tPRINTF((\"%05i\", (int)-2147483648));\n\tPRINTF((\"%030i\", (int)-2147483648));\n\tPRINTF((\"%010i\", (int)-2147483648));\n\tPRINTF((\"%011i\", (int)-2147483648));\n\tPRINTF((\"%012i\", (int)-2147483648));\n\tPRINTF((\"%012i, %20i, %2i, %000042i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012i, %i, %002i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%0014.2i%020i%0002.i%000.5i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014ic%020is%02ix%0iu\", (int)-2147483648, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%u, widths, precisions and 0\");\n\n\tPRINTF((\"%01u\", 0));\n\tPRINTF((\"%01u\", -4));\n\tPRINTF((\"%010u\", 42));\n\tPRINTF((\"%042u\", 42000));\n\tPRINTF((\"%020u\", -42000));\n\tPRINTF((\"wait for it... %050u\", 42));\n\tPRINTF((\"%020u is how many tests are going to be maie\", 8000));\n\tPRINTF((\"%05u\", 2147483647));\n\tPRINTF((\"%030u\", 2147483647));\n\tPRINTF((\"%010u\", 2147483647));\n\tPRINTF((\"%05u\", -1));\n\tPRINTF((\"%030u\", -1));\n\tPRINTF((\"%010u\", -1));\n\tPRINTF((\"%011u\", -1));\n\tPRINTF((\"%012u\", -1));\n\tPRINTF((\"%012u, %20u, %2u, %42u\", -1, 3, 30, -1));\n\tPRINTF((\"%012u, %u, %2u, %42u\", -1, 3, 30, -1));\n\tPRINTF((\"%014u%020u%02u%0u\", -1, 3, 30, -1));\n\tPRINTF((\"%014uc%020us%02ux%0ui\", -1, 3, 30, -1));\n\tPRINTF((\"%01.u\", 0));\n\tPRINTF((\"%01.0u\", 0));\n\tPRINTF((\"%02.0u\", 0));\n\tPRINTF((\"%03.0u\", 0));\n\tPRINTF((\"%01.1u\", 0));\n\tPRINTF((\"%01.2u\", 0));\n\tPRINTF((\"%01.3u\", 0));\n\tPRINTF((\"%01.0u\", 4));\n\tPRINTF((\"%01.1u\", 4));\n\tPRINTF((\"%01.2u\", 4));\n\tPRINTF((\"%01.3u\", 4));\n\tPRINTF((\"%010.20u\", 42));\n\tPRINTF((\"%042.2u\", 42000));\n\tPRINTF((\"%042.20u\", 42000));\n\tPRINTF((\"%042.42u\", 42000));\n\tPRINTF((\"%042.52u\", 42000));\n\tPRINTF((\"wait for it... %050.50u\", 42));\n\tPRINTF((\"%020.19u is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20u is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21u is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05u\", 2147483647));\n\tPRINTF((\"%030u\", 2147483647));\n\tPRINTF((\"%09u\", 2147483647));\n\tPRINTF((\"%010u\", 2147483647));\n\tPRINTF((\"%011u\", 2147483647));\n\tPRINTF((\"%05u\",  -1));\n\tPRINTF((\"%030u\", -1));\n\tPRINTF((\"%010u\", -1));\n\tPRINTF((\"%011u\", -1));\n\tPRINTF((\"%012u\", -1));\n\tPRINTF((\"%012u, %20u, %2u, %000042u\", -1, 3, 30, -1));\n\tPRINTF((\"%012u, %u, %002u, %42u\", -1, 3, 30, -1));\n\tPRINTF((\"%0014.2u%020u%0002.u%000.5u\", -1, 3, 30, -1));\n\tPRINTF((\"%014uc%020us%02ux%0ui\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions and 0\");\n\n\tPRINTF((\"%01x\", 0));\n\tPRINTF((\"%01x\", -4));\n\tPRINTF((\"%010x\", 42));\n\tPRINTF((\"%042x\", 42000));\n\tPRINTF((\"%020x\", -42000));\n\tPRINTF((\"wait for it... %050x\", 42));\n\tPRINTF((\"%020x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05x\", 2147483647));\n\tPRINTF((\"%030x\", 2147483647));\n\tPRINTF((\"%010x\", 2147483647));\n\tPRINTF((\"%05x\", -1));\n\tPRINTF((\"%030x\", -1));\n\tPRINTF((\"%010x\", -1));\n\tPRINTF((\"%011x\", -1));\n\tPRINTF((\"%012x\", -1));\n\tPRINTF((\"%012x, %20x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%012x, %x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%014x%020x%02x%0x\", -1, 3, 30, -1));\n\tPRINTF((\"%014xc%020xs%02xX%0xi\", -1, 3, 30, -1));\n\tPRINTF((\"%01.x\", 0));\n\tPRINTF((\"%01.0x\", 0));\n\tPRINTF((\"%02.0x\", 0));\n\tPRINTF((\"%03.0x\", 0));\n\tPRINTF((\"%01.1x\", 0));\n\tPRINTF((\"%01.2x\", 0));\n\tPRINTF((\"%01.3x\", 0));\n\tPRINTF((\"%01.0x\", 4));\n\tPRINTF((\"%01.1x\", 4));\n\tPRINTF((\"%01.2x\", 4));\n\tPRINTF((\"%01.3x\", 4));\n\tPRINTF((\"%010.20x\", 42));\n\tPRINTF((\"%042.2x\", 42000));\n\tPRINTF((\"%042.20x\", 42000));\n\tPRINTF((\"%042.42x\", 42000));\n\tPRINTF((\"%042.52x\", 42000));\n\tPRINTF((\"wait for it... %050.50x\", 42));\n\tPRINTF((\"%020.19x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05x\", 2147483647));\n\tPRINTF((\"%030x\", 2147483647));\n\tPRINTF((\"%09x\", 2147483647));\n\tPRINTF((\"%010x\", 2147483647));\n\tPRINTF((\"%011x\", 2147483647));\n\tPRINTF((\"%05x\",  -1));\n\tPRINTF((\"%030x\", -1));\n\tPRINTF((\"%010x\", -1));\n\tPRINTF((\"%011x\", -1));\n\tPRINTF((\"%012x\", -1));\n\tPRINTF((\"%012x, %20x, %2x, %000042x\", -1, 3, 30, -1));\n\tPRINTF((\"%012x, %x, %002x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%0014.2x%020x%0002.x%000.5x\", -1, 3, 30, -1));\n\tPRINTF((\"%014xc%020xs%02xx%0xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions and 0\");\n\n\tPRINTF((\"%01X\", 0));\n\tPRINTF((\"%01X\", -4));\n\tPRINTF((\"%010X\", 42));\n\tPRINTF((\"%042X\", 42000));\n\tPRINTF((\"%020X\", -42000));\n\tPRINTF((\"wait for it... %050X\", 42));\n\tPRINTF((\"%020X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05X\", 2147483647));\n\tPRINTF((\"%030X\", 2147483647));\n\tPRINTF((\"%010X\", 2147483647));\n\tPRINTF((\"%05X\", -1));\n\tPRINTF((\"%030X\", -1));\n\tPRINTF((\"%010X\", -1));\n\tPRINTF((\"%011X\", -1));\n\tPRINTF((\"%012X\", -1));\n\tPRINTF((\"%012X, %20X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%012X, %X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%014X%020X%02X%0X\", -1, 3, 30, -1));\n\tPRINTF((\"%014Xc%020Xs%02XX%0Xi\", -1, 3, 30, -1));\n\tPRINTF((\"%01.X\", 0));\n\tPRINTF((\"%01.0X\", 0));\n\tPRINTF((\"%02.0X\", 0));\n\tPRINTF((\"%03.0X\", 0));\n\tPRINTF((\"%01.1X\", 0));\n\tPRINTF((\"%01.2X\", 0));\n\tPRINTF((\"%01.3X\", 0));\n\tPRINTF((\"%01.0X\", 4));\n\tPRINTF((\"%01.1X\", 4));\n\tPRINTF((\"%01.3X\", 4));\n\tPRINTF((\"%010.20X\", 42));\n\tPRINTF((\"%042.2X\", 42000));\n\tPRINTF((\"%042.20X\", 42000));\n\tPRINTF((\"%042.42X\", 42000));\n\tPRINTF((\"%042.52X\", 42000));\n\tPRINTF((\"wait for it... %050.50X\", 42));\n\tPRINTF((\"%020.19X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05X\", 2147483647));\n\tPRINTF((\"%030X\", 2147483647));\n\tPRINTF((\"%09X\", 2147483647));\n\tPRINTF((\"%010X\", 2147483647));\n\tPRINTF((\"%011X\", 2147483647));\n\tPRINTF((\"%05X\",  -1));\n\tPRINTF((\"%030.20X\", -1));\n\tPRINTF((\"%010.11X\", -1));\n\tPRINTF((\"%011.11X\", -1));\n\tPRINTF((\"%012.11X\", -1));\n\tPRINTF((\"%012X, %20X, %2X, %000042.20X\", -1, 3, 30, -1));\n\tPRINTF((\"%012X, %X, %002X, %42.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%0014.2X%020X%0002.X%000.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%014Xc%020Xs%02.5XX%0.Xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%x and #\");\n\n\tPRINTF((\"%#x\", 0));\n\tPRINTF((\"%#x\", -4));\n\tPRINTF((\"%#x\", 42));\n\tPRINTF((\"%#x\", 42000));\n\tPRINTF((\"%#x\", -42000));\n\tPRINTF((\"wait for it... %#x\", 42));\n\tPRINTF((\"%#x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#xd\", 2147483647));\n\tPRINTF((\"%#xp\", 2147483647));\n\tPRINTF((\"%#xX\", 2147483647));\n\tPRINTF((\"%#xp\", -1));\n\tPRINTF((\"%#xd\", -1));\n\tPRINTF((\"%#xX\", -1));\n\tPRINTF((\"%#x\", -1));\n\tPRINTF((\"%#x, %x, %x, %x\", -1, 3, 30, -1));\n\tPRINTF((\"%#x%#x%#x%#x\", -1, 3, 30, -1));\n\tPRINTF((\"%#xc%#xs%#xX%#xi\", -1, 3, 30, -1));\n\tPRINTF((\"--.%#xp\", 0));\n\tPRINTF((\"--.%#xs\", 0));\n\tPRINTF((\"%#xc\", 4));\n\tPRINTF((\"c%#x-i\", 42000));\n\tPRINTF((\"wait for it... %#xp\", 42));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%X and #\");\n\n\tPRINTF((\"%#X\", 0));\n\tPRINTF((\"%#X\", -4));\n\tPRINTF((\"%#X\", 42));\n\tPRINTF((\"%#X\", 42000));\n\tPRINTF((\"%#X\", -42000));\n\tPRINTF((\"wait for it... %#X\", 42));\n\tPRINTF((\"%#X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#Xd\", 2147483647));\n\tPRINTF((\"%#Xp\", 2147483647));\n\tPRINTF((\"%#XX\", 2147483647));\n\tPRINTF((\"%#Xp\", -1));\n\tPRINTF((\"%#Xd\", -1));\n\tPRINTF((\"%#XX\", -1));\n\tPRINTF((\"%#X\", -1));\n\tPRINTF((\"%#X, %X, %X, %X\", -1, 3, 30, -1));\n\tPRINTF((\"%#X%#X%#X%#X\", -1, 3, 30, -1));\n\tPRINTF((\"%#Xc%#Xs%#Xx%#Xi\", -1, 3, 30, -1));\n\tPRINTF((\"--.%#Xp\", 0));\n\tPRINTF((\"--.%#Xs\", 0));\n\tPRINTF((\"%#Xc\", 4));\n\tPRINTF((\"c%#X-i\", 42000));\n\tPRINTF((\"wait for it... %#Xp\", 42));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and ' '\");\n\n\tPRINTF((\"% d\", 0));\n\tPRINTF((\"% d\", 1));\n\tPRINTF((\"% d\", -1));\n\tPRINTF((\"%    d\", 0));\n\tPRINTF((\"%   d\", 1));\n\tPRINTF((\"%  d\", -1));\n\tPRINTF((\"% d\", 2147483647));\n\tPRINTF((\"% d\", (int)-2147483648));\n\tPRINTF((\"%   d\", 2147483647));\n\tPRINTF((\"%  d\", (int)-2147483648));\n\tPRINTF((\"% d\", 2178647));\n\tPRINTF((\"% d\", (int)-2144348));\n\tPRINTF((\"%   d\", 2147837));\n\tPRINTF((\"%  d\", (int)-2147486));\n\tPRINTF((\"%  d this is %d getting% di hard :/\", (int)-2147486, -2, 42));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%i and ' '\");\n\n\tPRINTF((\"% i\", 0));\n\tPRINTF((\"% i\", 2));\n\tPRINTF((\"% i\", -2));\n\tPRINTF((\"%    i\", 0));\n\tPRINTF((\"%   i\", 1));\n\tPRINTF((\"%  i\", -1));\n\tPRINTF((\"% i\", 2147483647));\n\tPRINTF((\"% i\", (int)-2147483648));\n\tPRINTF((\"%   i\", 2147483647));\n\tPRINTF((\"%  i\", (int)-2147483648));\n\tPRINTF((\"% i\", 2178647));\n\tPRINTF((\"% i\", (int)-2144348));\n\tPRINTF((\"%   i\", 2147837));\n\tPRINTF((\"%  i\", (int)-2147486));\n\tPRINTF((\"%  i this is %i getting% is hari :/\", (int)-2147486, -2, 42));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and +\");\n\n\tPRINTF((\"%+d\", 0));\n\tPRINTF((\"%+d\", 1));\n\tPRINTF((\"%+d\", -1));\n\tPRINTF((\"%+d\", 24));\n\tPRINTF((\"%+d\", 42));\n\tPRINTF((\"%+d\", -42));\n\tPRINTF((\"%+d\", 2147483647));\n\tPRINTF((\"%+d\", (int)-2147483648));\n\tPRINTF((\"%+++d\", 2147483647));\n\tPRINTF((\"%++d\", (int)-2147483648));\n\tPRINTF((\"%+d\", 2178647));\n\tPRINTF((\"%+d\", (int)-2144348));\n\tPRINTF((\"%+++d\", 2147837));\n\tPRINTF((\"%++d\", (int)-2147486));\n\tPRINTF((\"%++d this is %d getting%+di hard :/\", (int)-2147486, -2, 42));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and +\");\n\n\tPRINTF((\"%+i\", 0));\n\tPRINTF((\"%+i\", 1));\n\tPRINTF((\"%+i\", -1));\n\tPRINTF((\"%+i\", 24));\n\tPRINTF((\"%+i\", 42));\n\tPRINTF((\"%+i\", -42));\n\tPRINTF((\"%+i\", 2147483647));\n\tPRINTF((\"%+i\", (int)-2147483648));\n\tPRINTF((\"%+++i\", 2147483647));\n\tPRINTF((\"%++i\", (int)-2147483648));\n\tPRINTF((\"%+i\", 2178647));\n\tPRINTF((\"%+i\", (int)-2144348));\n\tPRINTF((\"%+++i\", 2147837));\n\tPRINTF((\"%++i\", (int)-2147486));\n\tPRINTF((\"%++i this is %i getting%+ix hard :/\", (int)-2147486, -2, 42));\n\n\treturn (0);\n}\n"
  },
  {
    "path": "src/tests.c.old",
    "content": "#include \"ft_printf_tester.h\"\n#include \"helpers.h\"\n#include \"libftprintf.h\"\n\n#define INT_MIN (int)-2141483648\n#define INT_MAX 2141483647\n\nextern char g_orig_fake_stdout[BUFSIZ];\nextern char g_user_fake_stdout[BUFSIZ];\nextern char *g_test_params;\nextern int g_test_nbr;\nextern int already_printed_help;\nextern int g_current_test;\nextern int g_all_bonus;\n\nint right_cat = 1;\n\nint run_tests(int test_cat)\n{\n\tint wstatus;\n\tchar *null_str = NULL;\n\tint should_run = 1;\n\n\tdescribe(\"basic test\");\n\n\tPRINTF((\"1, 2, 3, -d test, testing, 0.4s sound, 1, 2, 3xp, sound, -*dtest\"));\n\n\t// if no cateogry was specified, then  run all of the categories\n\tright_cat = test_cat ? test_cat & (CAT_C | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%c basic\");\n\n\tPRINTF((\"%c\", 'a'));\n\tPRINTF((\"%c%c%c*\", '\\0', '1', 1));\n\tPRINTF((\"%c small string\", 'a'));\n\tPRINTF((\"%c small string\", '\\0'));\n\tPRINTF((\"the char is: %c\", 'a'));\n\tPRINTF((\"the char is: %c\", '\\0'));\n\tPRINTF((\"n%cs\", 'a'));\n\tPRINTF((\"%c%c%c%c%c\", 'a', 'i', 'u', 'e', 'o'));\n\tPRINTF((\"l%cl%cl%cl%cl%c\", 'a', 'i', 'u', 'e', 'o'));\n\tPRINTF((\"l%cl%cl%cl%cl%c\", '\\0', '\\0', '\\0', 'e', '\\0'));\n\n\tright_cat = test_cat ? test_cat & (CAT_S | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%s basic\");\n\n\tPRINTF((\"%s\", \"\"));\n\tPRINTF((\"this is a %s\", \"test\"));\n\tPRINTF((\"this is 1 %s with %s %s\", \"test\", \"multiple\", \"strings\"));\n\tPRINTF((\"%s%s%s%s\", \"This \", \"is\", \" an ugly \", \"test\"));\n\tPRINTF((\"%s\", \"This is a rather simple test.\"));\n\tPRINTF((\"%s\", \"-2\"));\n\tPRINTF((\" test with %s some %s empty strings\", \"\", \"\"))\n\tPRINTF((\"%s\", \"-24\"));\n\tPRINTF((\"%s\", \"-stop\"));\n\tPRINTF((\"%s\", \"-0003\"));\n\tPRINTF((\"%s\", \"000-0003\"));\n\tPRINTF((\"%s\", \"0x42\"));\n\tPRINTF((\"%s\", \"0x0000042\"));\n\tPRINTF((\"some naugty tests: %s\", \"0000%\"));\n\tPRINTF((\"some naugty tests: %s\", \"    %\"));\n\tPRINTF((\"some naugty tests: %s\", \"%000\"));\n\tPRINTF((\"%s\", null_str));\n\tPRINTF((\"%s everywhere\", null_str));\n\tPRINTF((\"everywhere %s\", null_str));\n\tPRINTF((\"%s\", \"h\"));\n\tPRINTF((\"t%st%s\", \"a\", \"u\"));\n\tPRINTF((\"%s%s%s%s%s%s\", \"a\", \"i\", \"u\", \"e\", \"o\", \"l\"));\n\n\tright_cat = test_cat ? test_cat & (CAT_P | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%p basic\");\n\n\tint test = 42;\n\tPRINTF((\"%p\", &test));\n\tPRINTF((\"%p is a virtual memory address\", &test));\n\tPRINTF((\"The address of the answer is %p\", &test));\n\tPRINTF((\"The address is %p, so what?\", &test));\n\tint *ptr = &test;\n\tPRINTF((\"A pointer at %p points to %p\", &test, &ptr));\n\tPRINTF((\"This %p is a very strange address\", (void *)(long int)test));\n\n\tchar *mallocked = malloc(2);\n\tPRINTF((\"This %p is an address from the heap\", mallocked); free(mallocked);); free(mallocked);\n\tPRINTF_EXPECTED((\"%p\", NULL),                       /* expected: */ (\"0x0\"));\n\tPRINTF_EXPECTED((\"The NULL macro represents the %p address\", NULL), (\"The NULL macro represents the 0x0 address\"));\n\tPRINTF((\"This %p is even stranger\", (void *)-1));\n\n\tright_cat = test_cat ? test_cat & (CAT_D | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%d basic\");\n\n\tPRINTF((\"%d\", 0));\n\tPRINTF((\"%d\", 10));\n\tPRINTF((\"%d, %d\", 10, 20));\n\tPRINTF((\"%d%d%d%d\", 10, 20, 30, 5));\n\tPRINTF((\"%d %d\", 2147483647, (int)-2147483648));\n\tPRINTF((\"42 - 84 is %d\", -42));\n\tPRINTF((\"%d C is the lowest temperature in the universe\", -273));\n\tPRINTF((\"%dxC is the lowest temperature in the universe\", -273));\n\tPRINTF((\"%dsC is the lowest temperature in the universe\", -273));\n\tPRINTF((\"%dpC is the lowest temperature in the universe\", -273));\n\n\tright_cat = test_cat ? test_cat & (CAT_I | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%i basic\");\n\n\tPRINTF((\"%i\", 0));\n\tPRINTF((\"%i\", 10));\n\tPRINTF((\"%i, %i\", 10, 23));\n\tPRINTF((\"%i%i%i%i%i%i%i\", 10, 23, -2, 37, 200, -9999, 977779));\n\tPRINTF((\"%i %i\", 2147483647, (int)-2147483648));\n\tPRINTF((\"%iq%i\", 21447, -21648));\n\t\n\tright_cat = test_cat ? test_cat & (CAT_U | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%u basic\");\n\n\tPRINTF((\"%u\", 42));\n\tPRINTF((\"%u\", 0));\n\tPRINTF((\"%u\", 2147483647));\n\tPRINTF((\"%u\", (unsigned int)2147483648));\n\tPRINTF((\"%u\", (unsigned int)3147983649));\n\tPRINTF((\"%u\", (unsigned int)4294967295));\n\tPRINTF((\"%u to the power of %u is %u\", 2, 32, (unsigned int)4294967295));\n\tPRINTF((\"%u%u%u%u\", (unsigned int)429896724, 0, 32, (unsigned int)4294967295));\n\t\n\tright_cat = test_cat ? test_cat & (CAT_X | CAT_MANDATORY ) : 1;\n\tdescribe(\"\\n%x basic\");\n\n\tPRINTF((\"%x\", 0));\n\tPRINTF((\"%x\", 1));\n\tPRINTF((\"%x\", 10));\n\tPRINTF((\"%x\", 16));\n\tPRINTF((\"%x\", 160));\n\tPRINTF((\"%x\", 255));\n\tPRINTF((\"%x\", 256));\n\tPRINTF((\"%x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %x\", (unsigned int)3735929054));\n\tPRINTF((\"%x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %x\", (unsigned int)-1));\n\t\n\tright_cat = test_cat ? test_cat & (CAT_BIG_X | CAT_MANDATORY ): 1;\n\tdescribe(\"\\n%X basic\");\n\n\tPRINTF((\"%X\", 0));\n\tPRINTF((\"%X\", 1));\n\tPRINTF((\"%X\", 10));\n\tPRINTF((\"%X\", 16));\n\tPRINTF((\"%X\", 160));\n\tPRINTF((\"%X\", 255));\n\tPRINTF((\"%X\", 256));\n\tPRINTF((\"%X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %X\", (unsigned int)3735929054));\n\tPRINTF((\"%X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %X\", (unsigned int)-1));\n\t\n\tright_cat = test_cat ? test_cat & (CAT_PERCENT | CAT_MANDATORY) : 1;\n\tdescribe(\"\\n%% basic\");\n\n\tPRINTF((\"%%\"));\n\tPRINTF((\"100%%\"));\n\tPRINTF((\"%%p is how you print a pointer in printf\"));\n\tPRINTF((\"the '%%%%' is used to print a %% in printf\"));\n\tPRINTF((\"%%%%%%%%%%%%%%%%\"));\n\tPRINTF((\"%%c%%s%%p%%d%%i%%u%%x%%X%%\"));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1 \n\t\t: test_cat ? (test_cat & CAT_C && test_cat & CAT_BONUS_1) \n\t\t: 1;\n\tdescribe(\"\\n%c and widths\");\n\n\tPRINTF((\"%1c\", 'a'))\n\tPRINTF((\"%1c\", '\\0'))\n\tPRINTF((\"%10c\", 'b'))\n\tPRINTF((\"%10c\", '\\0'))\n\tPRINTF((\"%2c\", 'c'))\n\tPRINTF((\"there are 15 spaces between this text and the next char%15c\", 'd'))\n\tPRINTF((\"%5chis paragraph is indented\", 't'))\n\tPRINTF((\"%5c now you see\", '\\0'))\n\tPRINTF((\"The number %7c represents luck\", '7'))\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_S && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%s and widths\");\n\n\tPRINTF((\"%1s\", \"\"));\n\tPRINTF((\"%2s\", \"\"));\n\tPRINTF((\"%5s\", \"\"));\n\tPRINTF((\"%1s\", \"a\"));\n\tPRINTF((\"%1s\", \"abc\"));\n\tPRINTF((\"%7s\", \"a\"));\n\tPRINTF((\"%7s\", \"abc\"));\n\tPRINTF((\"%1s\", \"-42\"));\n\tPRINTF((\"%2s\", \"-42\"));\n\tPRINTF((\"%3s\", \"-42\"));\n\tPRINTF((\"%4s\", \"-42\"));\n\tPRINTF((\"%5s\", \"-42\"));\n\tPRINTF((\"%6s\", \"-42\"));\n\tPRINTF((\"%1s\", null_str));\n\tPRINTF((\"%2s\", null_str));\n\tPRINTF((\"%5s\", null_str));\n\tPRINTF((\"%6s\", null_str));\n\tPRINTF((\"%7s\", null_str));\n\tPRINTF((\"%7s is as easy as %13s\", \"abc\", \"123\"));\n\tPRINTF((\"%13s are the three first letter of the %3s\", \"a, b and c\", \"alphabet\"));\n\tPRINTF((\"%s%13s%42s%3s\", \"a, b and c\", \" are letters\", \" of the\", \" alphabet\"));\n\tPRINTF((\"%sc%13sd%42sp%3sx\", \"a, b and c\", \" are letters\", \" of the\", \" alphabet\"));\n\tPRINTF((\"%sc%13sd%42sp%3sx\", \"a, b and c\", \" are letters\", \" of the\", \" alphabet\"));\n\tPRINTF((\"%sc%13sd%42sp%sx\", \"a, b and c\", \"\", \" of the\", \"\"));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_P && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%p and widths\");\n\n\tchar c;\n\tPRINTF((\"%1p\", &c));\n\tPRINTF((\"%30p\", &c));\n\tPRINTF((\"%12p\", (void *)0x7ffe6b8e60c6));\n\tPRINTF((\"%13p\", (void *)0x7ffe6b8e60c5));\n\tPRINTF((\"%14p\", (void *)0x7ffe6b8e60c4));\n\tPRINTF((\"the address is %12p\", (void *)0x7ffe6b8e60c7));\n\tPRINTF((\"the address is %13p\", (void *)0x7ffe6b8e60c8));\n\tPRINTF((\"the address is %14p\", (void *)0x7ffe6b8e60c9));\n\tPRINTF_EXPECTED((\"the address is %1p\", (void *)0), /* expected: */ (\"the address is 0x0\"));\n\tPRINTF_EXPECTED((\"the address is %2p\", (void *)0), /* expected: */ (\"the address is 0x0\"));\n\tPRINTF_EXPECTED((\"the address is %3p\", (void *)0), /* expected: */ (\"the address is 0x0\"));\n\tPRINTF_EXPECTED((\"the address is %4p\", (void *)0), /* expected: */ (\"the address is  0x0\"));\n\tPRINTF_EXPECTED((\"the address is %8p\", (void *)0), /* expected: */ (\"the address is      0x0\"));\n\tPRINTF((\"%12p is the address\", (void *)0x7ffe6b8e60c7));\n\tPRINTF((\"%13p is the address\", (void *)0x7ffe6b8e60c8));\n\tPRINTF((\"%14p is the address\", (void *)0x7ffe6b8e60c9));\n\tPRINTF_EXPECTED((\"%1p is the address\", (void *)0), /* expected: */ (\"0x0 is the address\"));\n\tPRINTF_EXPECTED((\"%2p is the address\", (void *)0), /* expected: */ (\"0x0 is the address\"));\n\tPRINTF_EXPECTED((\"%3p is the address\", (void *)0), /* expected: */ (\"0x0 is the address\"));\n\tPRINTF_EXPECTED((\"%4p is the address\", (void *)0), /* expected: */ (\" 0x0 is the address\"));\n\tPRINTF_EXPECTED((\"%8p is the address\", (void *)0), /* expected: */ (\"     0x0 is the address\"));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and widths\");\n\n\tPRINTF((\"%1d\", 0));\n\tPRINTF((\"%1d\", -4));\n\tPRINTF((\"%10d\", 42));\n\tPRINTF((\"%42d\", 42000));\n\tPRINTF((\"%20d\", -42000));\n\tPRINTF((\"wait for it... %50d\", 42));\n\tPRINTF((\"%20d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%5d\", 2147483647));\n\tPRINTF((\"%30d\", 2147483647));\n\tPRINTF((\"%10d\", 2147483647));\n\tPRINTF((\"%5d\", (int)-2147483648));\n\tPRINTF((\"%30d\", (int)-2147483648));\n\tPRINTF((\"%10d\", (int)-2147483648));\n\tPRINTF((\"%11d\", (int)-2147483648));\n\tPRINTF((\"%12d\", (int)-2147483648));\n\tPRINTF((\"%12d, %20d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%12d, %d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14d%20d%2d%d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14dc%20ds%2dx%du\", (int)-2147483648, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%i and widths\");\n\n\tPRINTF((\"%1i\", 0));\n\tPRINTF((\"%1i\", -4));\n\tPRINTF((\"%10i\", 42));\n\tPRINTF((\"%42i\", 42000));\n\tPRINTF((\"%20i\", -42000));\n\tPRINTF((\"wait for it... %50i\", 42));\n\tPRINTF((\"%20i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%5i\", 2147483647));\n\tPRINTF((\"%30i\", 2147483647));\n\tPRINTF((\"%10i\", 2147483647));\n\tPRINTF((\"%5i\", (int)-2147483648));\n\tPRINTF((\"%30i\", (int)-2147483648));\n\tPRINTF((\"%10i\", (int)-2147483648));\n\tPRINTF((\"%11i\", (int)-2147483648));\n\tPRINTF((\"%12i\", (int)-2147483648));\n\tPRINTF((\"%12i, %20i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%12i, %i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14i%20i%2i%i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%14ic%20is%2ix%du\", (int)-2147483648, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%u and widths\");\n\n\tPRINTF((\"%1u\", 0));\n\tPRINTF((\"%2u\", 1));\n\tPRINTF((\"%1u\", 1000));\n\tPRINTF((\"%4u\", 1000));\n\tPRINTF((\"%30u\", 1000));\n\tPRINTF((\"%9u is the biggest unsigned int\", (unsigned int)-1));\n\tPRINTF((\"%10uis the biggest unsigned int\", (unsigned int)-1));\n\tPRINTF((\"%11uis the biggest unsigned int\", (unsigned int)-1));\n\tPRINTF((\"the biggest unsigned int is %9u\", (unsigned int)-1));\n\tPRINTF((\"the biggest unsigned int is %10u\", (unsigned int)-1));\n\tPRINTF((\"the biggest unsigned int is %11u\", (unsigned int)-1));\n\tPRINTF((\"Here are some numbers: %1u%2u%5u%3u%9u and %ui\", 11, (unsigned int)-1, 2, 200, 3, 10));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%x and widths\");\n\n\tPRINTF((\"%1x\", 0));\n\tPRINTF((\"%2x\", 1));\n\tPRINTF((\"%3x\", 10));\n\tPRINTF((\"%1x\", 16));\n\tPRINTF((\"%2x\", 160));\n\tPRINTF((\"%3x\", 255));\n\tPRINTF((\"%42x\", 256));\n\tPRINTF((\"%7x\", (unsigned int)3735929054));\n\tPRINTF((\"%8x\", (unsigned int)3735929054));\n\tPRINTF((\"%9x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %7x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %8x\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %9x\", (unsigned int)3735929054));\n\tPRINTF((\"%1x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%2x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%3x is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %7x\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %8x\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %9x\", (unsigned int)-1));\n\tPRINTF((\"%1x%2x%9x\", (unsigned int)-1, 0xf0ca, 123456));\n\tPRINTF((\"%1xis doomed%2xpost%9xX args\", (unsigned int)-1, 0xf0b1a, 7654321));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%X and widths\");\n\n\tPRINTF((\"%1X\", 0));\n\tPRINTF((\"%2X\", 1));\n\tPRINTF((\"%3X\", 10));\n\tPRINTF((\"%1X\", 16));\n\tPRINTF((\"%2X\", 160));\n\tPRINTF((\"%3X\", 255));\n\tPRINTF((\"%42X\", 256));\n\tPRINTF((\"%7X\", (unsigned int)3735929054));\n\tPRINTF((\"%8X\", (unsigned int)3735929054));\n\tPRINTF((\"%9X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %7X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %8X\", (unsigned int)3735929054));\n\tPRINTF((\"the password is %9X\", (unsigned int)3735929054));\n\tPRINTF((\"%1X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%2X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"%3X is the definitive answer\", (unsigned int)66));\n\tPRINTF((\"this is the real number: %7X\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %8X\", (unsigned int)-1));\n\tPRINTF((\"this is the real number: %9X\", (unsigned int)-1));\n\tPRINTF((\"%1X%2X%9X\", (unsigned int)-1, 0xf0ca, 123456));\n\tPRINTF((\"%1Xis doomed%2Xpost%9Xx args\", (unsigned int)-1, 0xf0b1a, 7654321));\n\n\tdescribe(\"\\n%s and precisions\");\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_S && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tPRINTF((\"%.s\", \"hi there\"));\n\tPRINTF((\"%.0s\", \"hi there\"));\n\tPRINTF((\"%.1s\", \"hi there\"));\n\tPRINTF((\"%.2s\", \"hi there\"));\n\tPRINTF((\"%.3s\", \"hi there\"));\n\tPRINTF((\"%.4s\", \"hi there\"));\n\tPRINTF((\"%.7s\", \"hi there\"));\n\tPRINTF((\"%.8s\", \"hi there\"));\n\tPRINTF((\"%.9s\", \"hi there\"));\n\tPRINTF((\"%.12s\", \"hi there\"));\n\tPRINTF((\"%.s\", \"-42\"));\n\tPRINTF((\"%.0s\", \"-42\"));\n\tPRINTF((\"%.1s\", \"-42\"));\n\tPRINTF((\"%.2s\", \"-42\"));\n\tPRINTF((\"%.3s\", \"-42\"));\n\tPRINTF((\"%.4s\", \"-42\"));\n\tPRINTF((\"%.7s\", \"-42\"));\n\tPRINTF((\"%.s\", \"\"));\n\tPRINTF((\"%.0s\", \"\"));\n\tPRINTF((\"%.1s\", \"\"));\n\tPRINTF((\"%.5s\", \"\"));\n\tPRINTF_EXPECTED((\"%.1s\", null_str), /* expected: */ (\"(\"));\n\tPRINTF_EXPECTED((\"%.2s\", null_str), /* expected: */ (\"(n\"));\n\tPRINTF_EXPECTED((\"%.5s\", null_str), /* expected: */ (\"(null\"));\n\tPRINTF((\"%.6s\", null_str));\n\tPRINTF((\"%.7s\", null_str));\n\tPRINTF((\"%.2s, motherfucker\", \"hi there\"));\n\tPRINTF((\"This %.3s a triumph \", \"wasabi\"));\n\tPRINTF((\"%.4s making a %.4s here: %.13s\", \"I'm delighted\", \"notation\", \"HUGE SUCCESS!\"));\n\tPRINTF((\"It's %.4s to over%.50s my%s\", \"hardware\", \"state\", \" satisfaction\"));\n\tPRINTF((\"%.11s%.6s%.4s\", \"Aperture\", \" Scientists\", \"ce\"));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%d and precisions\");\n\n\tPRINTF((\"%.1d\", 2))\n\tPRINTF((\"%.2d\", 3))\n\tPRINTF((\"%.4d\", 32))\n\tPRINTF((\"%.3d\", 420000))\n\tPRINTF((\"%.0d\", 420000))\n\tPRINTF((\"%.3d\", -1))\n\tPRINTF((\"%.3d\", -1234))\n\tPRINTF((\"%.4d\", -1234))\n\tPRINTF((\"%.5d\", -1234))\n\tPRINTF((\"%.5d\", (int)-2147483648))\n\tPRINTF((\"%.9d\", (int)-2147483648))\n\tPRINTF((\"%.10d\", (int)-2147483648))\n\tPRINTF((\"%.11d\", (int)-2147483648))\n\tPRINTF((\"%.12d\", (int)-2147483648))\n\tPRINTF((\"%.13d\", (int)-2147483648))\n\tPRINTF((\"%.5d\", 2147483647))\n\tPRINTF((\"%.9d\", 2147483647))\n\tPRINTF((\"%.10d\", 2147483647))\n\tPRINTF((\"%.11d\", 2147483647))\n\tPRINTF((\"%.12d\", 2147483647))\n\tPRINTF((\"%.0d\", 2))\n\tPRINTF((\"%.0d\", 2147483647))\n\tPRINTF((\"%.0d\", 0))\n\tPRINTF((\"%.0d\", 10))\n\tPRINTF((\"%.d\", 10))\n\tPRINTF((\"%.d\", 0))\n\tPRINTF((\"I'm gonna watch %.3d\", 7))\n\tPRINTF((\"%.3d is the movie I'm gonna watch\", 7))\n\tPRINTF((\"Then take these %.7d things and get the hell out of here\", 2))\n\tPRINTF((\"Bla %.2di bla %.5dsbla bla %.dx bla %.d\", 127, 42, 1023, 0))\n\tPRINTF((\"%.4d%.2d%.20d%.0d%.0d%.d%.d%.d\", 127, 0, 1023, 0, (int)-2147483648, 0, 1, (int)-2147483648))\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%i and precisions\");\n\n\tPRINTF((\"%.1i\", 7))\n\tPRINTF((\"%.3i\", 7))\n\tPRINTF((\"%.2i\", 3))\n\tPRINTF((\"%.4i\", 32))\n\tPRINTF((\"%.3i\", 420000))\n\tPRINTF((\"%.0i\", 420000))\n\tPRINTF((\"%.3i\", -1))\n\tPRINTF((\"%.3i\", -1234))\n\tPRINTF((\"%.4i\", -1234))\n\tPRINTF((\"%.5i\", -1234))\n\tPRINTF((\"%.5i\", (int)-2147483648))\n\tPRINTF((\"%.9i\", (int)-2147483648))\n\tPRINTF((\"%.10i\", (int)-2147483648))\n\tPRINTF((\"%.11i\", (int)-2147483648))\n\tPRINTF((\"%.12i\", (int)-2147483648))\n\tPRINTF((\"%.13i\", (int)-2147483648))\n\tPRINTF((\"%.5i\", 2147483647))\n\tPRINTF((\"%.9i\", 2147483647))\n\tPRINTF((\"%.10i\", 2147483647))\n\tPRINTF((\"%.11i\", 2147483647))\n\tPRINTF((\"%.12i\", 2147483647))\n\tPRINTF((\"%.0i\", 2))\n\tPRINTF((\"%.0i\", 2147483647))\n\tPRINTF((\"%.0i\", 0))\n\tPRINTF((\"%.0i\", 10))\n\tPRINTF((\"%.i\", 10))\n\tPRINTF((\"%.i\", 0))\n\tPRINTF((\"I'm gonna watch %.3i\", 7))\n\tPRINTF((\"%.3i is the movie I'm gonna watch\", 7))\n\tPRINTF((\"Then take these %.7i things and get the hell out of here\", 2))\n\tPRINTF((\"Bla %.2ii bla %.5isbla bla %.ix bla %.i\", 127, 42, 1023, 0))\n\tPRINTF((\"%.4i%.2i%.20i%.0i%.0i%.i%.i%.i\", 127, 0, 1023, 0, (int)-2147483648, 0, 1, (int)-2147483648))\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%u and precisions\");\n\n\tPRINTF((\"%.1u\", 1))\n\tPRINTF((\"%.2u\", 1))\n\tPRINTF((\"%.2u\", 0))\n\tPRINTF((\"%.0u\", 0))\n\tPRINTF((\"%.u\", 0))\n\tPRINTF((\"%.2u\", 30000))\n\tPRINTF((\"%.20u\", 30000))\n\tPRINTF((\"%.0u\", (unsigned int)-1))\n\tPRINTF((\"%.5u\", (unsigned int)-1))\n\tPRINTF((\"%.9u\", (unsigned int)-1))\n\tPRINTF((\"%.10u\", (unsigned int)-1))\n\tPRINTF((\"%.11u\", (unsigned int)-1))\n\tPRINTF((\"%.10uis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.0uis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.4us a big number\", (unsigned int)-1))\n\tPRINTF((\"%.9uxs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.11ups a big number\", (unsigned int)-1))\n\tPRINTF((\"the number is %.0u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.5u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.9u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.10u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11u\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11u\", (unsigned int)-1))\n\tPRINTF((\"%.0uis a big number\", 0))\n\tPRINTF((\"%.4us a big number\", 0))\n\tPRINTF((\"the number is %.0u\", 0))\n\tPRINTF((\"the number is %.u\", 0))\n\tPRINTF((\"the number is %.5u\", 0))\n\tPRINTF((\"%u%.5u%.0u%.u%.9u\", 5, 55, 2, 0, 42))\n\tPRINTF((\"%us%.5ui%.0uc%.up%.9ux\", 5, 55, 2, 0, 42))\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%x and precisions\");\n\n\tPRINTF((\"%.1x\", 0xa))\n\tPRINTF((\"%.4x\", 11))\n\tPRINTF((\"%.0x\", 0))\n\tPRINTF((\"%.1x\", -1))\n\tPRINTF((\"%.10x\", -1))\n\tPRINTF((\"%.14x\", -1))\n\tPRINTF((\"%.8x\", 0))\n\tPRINTF((\"%.2x\", 30000))\n\tPRINTF((\"%.20x\", 30000))\n\tPRINTF((\"%.0x\", (unsigned int)-1))\n\tPRINTF((\"%.5x\", (unsigned int)-1))\n\tPRINTF((\"%.9x\", (unsigned int)-1))\n\tPRINTF((\"%.10x\", (unsigned int)-1))\n\tPRINTF((\"%.11x\", (unsigned int)-1))\n\tPRINTF((\"%.10xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.0xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.4xs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.9xxs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.11xps a big number\", (unsigned int)-1))\n\tPRINTF((\"the number is %.0x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.5x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.9x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.10x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11x\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11x\", (unsigned int)-1))\n\tPRINTF((\"%.0xis a big number\", 0))\n\tPRINTF((\"%.4xs a big number\", 0))\n\tPRINTF((\"the number is %.0x\", 0))\n\tPRINTF((\"the number is %.x\", 0))\n\tPRINTF((\"the number is %.5x\", 0))\n\tPRINTF((\"%x%.5x%.0x%.x%.9x\", 5, 55, 2, 0, 42))\n\tPRINTF((\"%xs%.5xi%.0xc%.xp%.9xu\", 5, 55, 2, 0, 42))\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%X and precisions\");\n\n\tPRINTF((\"%.1X\", 0xa))\n\tPRINTF((\"%.4X\", 11))\n\tPRINTF((\"%.0X\", 0))\n\tPRINTF((\"%.1X\", -1))\n\tPRINTF((\"%.10X\", -1))\n\tPRINTF((\"%.14X\", -1))\n\tPRINTF((\"%.8X\", 0))\n\tPRINTF((\"%.2X\", 30000))\n\tPRINTF((\"%.20X\", 30000))\n\tPRINTF((\"%.0X\", (unsigned int)-1))\n\tPRINTF((\"%.5X\", (unsigned int)-1))\n\tPRINTF((\"%.9X\", (unsigned int)-1))\n\tPRINTF((\"%.10X\", (unsigned int)-1))\n\tPRINTF((\"%.11X\", (unsigned int)-1))\n\tPRINTF((\"%.10Xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.0Xis a big number\", (unsigned int)-1))\n\tPRINTF((\"%.4Xs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.9XXs a big number\", (unsigned int)-1))\n\tPRINTF((\"%.11Xps a big number\", (unsigned int)-1))\n\tPRINTF((\"the number is %.0X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.5X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.9X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.10X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11X\", (unsigned int)-1))\n\tPRINTF((\"the number is %.11X\", (unsigned int)-1))\n\tPRINTF((\"%.0Xis a big number\", 0))\n\tPRINTF((\"%.4Xs a big number\", 0))\n\tPRINTF((\"the number is %.0X\", 0))\n\tPRINTF((\"the number is %.X\", 0))\n\tPRINTF((\"the number is %.5X\", 0))\n\tPRINTF((\"%X%.5X%.0X%.X%.9X\", 5, 55, 2, 0, 42))\n\tPRINTF((\"%Xs%.5Xi%.0Xc%.Xp%.9Xu\", 5, 55, 2, 0, 42))\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_C && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%c, widths and -\");\n\n\t// this is literally a negative width '-'\n\tPRINTF((\"%-c\", 'p'));\n\tPRINTF((\"%-c%-c%c*\", 0, '1', 1));\n\tPRINTF((\"%-1c\", 'b'));\n\tPRINTF((\"%-5c\", 'w'));\n\tPRINTF((\" kk daora%-5cblz\", 'w'));\n\tPRINTF((\"%-20carigatou\", 'w'));\n\tPRINTF((\"%-c%-c%-4c%-11c\", 'a', 'b', 'c', 'd'));\n\tPRINTF((\"%-ci%-cp%4cs%-11cx\", 'a', 'b', 'c', 'd'));\n\tPRINTF((\"%----ci%---cp%4cs%--11cx\", 'a', 'b', 'c', 'd'));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_S && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%s, widths, precisions and -\");\n\n\tPRINTF((\"%-sScience!\", \"Aperture\"));\n\tPRINTF((\"%-9sScience!\", \"Aperture\"));\n\tPRINTF((\"We %-s what we %8s, %-2s we %-20s\", \"do\", \"must\", \"because\", \"can\"));\n\tPRINTF((\"%--4s %s %------------------9s of %s of %-5s\", \"for\", \"the\", \"goooood\", \"aaall\", \"us\"));\n\tPRINTF((\"%--4.1s %s %------------------9.3s of %s of %-5.7s\", \"for\", \"the\", \"goooood\", \"aaall\", \"us\"));\n\tPRINTF((\"%--.sp--.su kkkk\", \"pegadinha po\"));\n\tPRINTF((\"%-9sScience!\", \"-42\"));\n\tPRINTF((\"%-s %-.7s!\", \"Aperture\", \"Science\"));\n\tPRINTF((\"%-sScience!\", \"\"));\n\tPRINTF((\"%-1sScience!\", \"\"));\n\tPRINTF((\"%-9.2sScience!\", \"\"));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_P && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%p, widths and -\");\n\n\tPRINTF((\"that's the way it %-20pis\", \"\"));\n\tPRINTF((\"as soon as %-10possible\", (void *) -1));\n\tPRINTF((\"as soon as %-16peasible\", (void *) (((long int)3 << 42) + 15)));\n\tPRINTF((\"as soon as %-16peasible\", (void *) (((long int)3 << 42) + 15)));\n\tPRINTF((\"thats %-psrobably not a good idea\", (void *) 13));\n\tPRINTF((\"%------21pwhoa wtf is that\", (void *) 13));\n\tPRINTF((\"%------21p yeah i'm %p running out %--p of ideas\", (void *) 13, (void *) 65, (void *) -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and -\");\n\n\tPRINTF((\"%-d\", 0));\n\tPRINTF((\"%-d\", 1));\n\tPRINTF((\"%-d\", 10));\n\tPRINTF((\"%-d\", -10));\n\tPRINTF((\"%-d\", 5000));\n\tPRINTF((\"%-d\", -5000));\n\tPRINTF((\"%-d\", (int)-2147483648));\n\tPRINTF((\"%-d\", 2147483647));\n\tPRINTF((\"%-1d\", 0));\n\tPRINTF((\"%-1d\", 1));\n\tPRINTF((\"%-1d\", 10));\n\tPRINTF((\"%-1d\", -10));\n\tPRINTF((\"%-1d\", 5000));\n\tPRINTF((\"%-1d\", -5000));\n\tPRINTF((\"%-1d\", (int)-2147483648));\n\tPRINTF((\"%-1d\", 2147483647));\n\tPRINTF((\"%-10d\", 0));\n\tPRINTF((\"%-10d\", 1));\n\tPRINTF((\"%-10d\", 10));\n\tPRINTF((\"%-10d\", -10));\n\tPRINTF((\"%-10d\", 5000));\n\tPRINTF((\"%-10d\", -5000));\n\tPRINTF((\"%-10d\", (int)-2147483648));\n\tPRINTF((\"%-10d\", 2147483647));\n\tPRINTF((\"%-.d\", 0));\n\tPRINTF((\"%-.1d\", 1));\n\tPRINTF((\"%-.2d\", 10));\n\tPRINTF((\"%-.3d\", -10));\n\tPRINTF((\"%-.4d\", 5000));\n\tPRINTF((\"%-.5d\", -5000));\n\tPRINTF((\"%-.6d\", (int)-2147483648));\n\tPRINTF((\"%-.7d\", 2147483647));\n\tPRINTF((\"%-1.8d\", 0));\n\tPRINTF((\"%-1.9d\", 1));\n\tPRINTF((\"%-1.10d\", 10));\n\tPRINTF((\"%-1.0d\", -10));\n\tPRINTF((\"%-1.6d\", 5000));\n\tPRINTF((\"%-1.4d\", -5000));\n\tPRINTF((\"%-1.10d\", (int)-2147483648));\n\tPRINTF((\"%-1.12d\", 2147483647));\n\tPRINTF((\"%-10.d\", 0));\n\tPRINTF((\"%-10.10d\", 1));\n\tPRINTF((\"%-10.5d\", 10));\n\tPRINTF((\"%-10.2d\", -10));\n\tPRINTF((\"%-10.5d\", 5000));\n\tPRINTF((\"%-10.5d\", -5000));\n\tPRINTF((\"%-10.15d\", (int)-2147483648));\n\tPRINTF((\"%-10.5d\", 2147483647));\n\tPRINTF((\"%-15.d\", 0));\n\tPRINTF((\"%-15.10d\", 1));\n\tPRINTF((\"%-15.5d\", 10));\n\tPRINTF((\"%-15.2d\", -10));\n\tPRINTF((\"%-15.5d\", 5000));\n\tPRINTF((\"%-15.5d\", -5000));\n\tPRINTF((\"%-15.15d\", (int)-2147483648));\n\tPRINTF((\"%-15.5d\", 2147483647));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5d%d%4d%-10d-d5%-.3d\", (int)-2147483648, (int)-2141483648, (int)-2141483648, (int)-2141483648, (int)-2141483648));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%i, widths, precisions and -\");\n\n\tPRINTF((\"%-i\", 0));\n\tPRINTF((\"%-i\", 1));\n\tPRINTF((\"%-i\", 10));\n\tPRINTF((\"%-i\", -10));\n\tPRINTF((\"%-i\", 5000));\n\tPRINTF((\"%-i\", -5000));\n\tPRINTF((\"%-i\", (int)-2147483648));\n\tPRINTF((\"%-i\", 2147483647));\n\tPRINTF((\"%-1i\", 0));\n\tPRINTF((\"%-1i\", 1));\n\tPRINTF((\"%-1i\", 10));\n\tPRINTF((\"%-1i\", -10));\n\tPRINTF((\"%-1i\", 5000));\n\tPRINTF((\"%-1i\", -5000));\n\tPRINTF((\"%-1i\", (int)-2147483648));\n\tPRINTF((\"%-1i\", 2147483647));\n\tPRINTF((\"%-10i\", 0));\n\tPRINTF((\"%-10i\", 1));\n\tPRINTF((\"%-10i\", 10));\n\tPRINTF((\"%-10i\", -10));\n\tPRINTF((\"%-10i\", 5000));\n\tPRINTF((\"%-10i\", -5000));\n\tPRINTF((\"%-10i\", (int)-2147483648));\n\tPRINTF((\"%-10i\", 2147483647));\n\tPRINTF((\"%-.i\", 0));\n\tPRINTF((\"%-.1i\", 1));\n\tPRINTF((\"%-.2i\", 10));\n\tPRINTF((\"%-.3i\", -10));\n\tPRINTF((\"%-.4i\", 5000));\n\tPRINTF((\"%-.5i\", -5000));\n\tPRINTF((\"%-.6i\", (int)-2147483648));\n\tPRINTF((\"%-.7i\", 2147483647));\n\tPRINTF((\"%-1.8i\", 0));\n\tPRINTF((\"%-1.9i\", 1));\n\tPRINTF((\"%-1.10i\", 10));\n\tPRINTF((\"%-1.0i\", -10));\n\tPRINTF((\"%-1.6i\", 5000));\n\tPRINTF((\"%-1.4i\", -5000));\n\tPRINTF((\"%-1.10i\", (int)-2147483648));\n\tPRINTF((\"%-1.12i\", 2147483647));\n\tPRINTF((\"%-10.i\", 0));\n\tPRINTF((\"%-10.10i\", 1));\n\tPRINTF((\"%-10.5i\", 10));\n\tPRINTF((\"%-10.2i\", -10));\n\tPRINTF((\"%-10.5i\", 5000));\n\tPRINTF((\"%-10.5i\", -5000));\n\tPRINTF((\"%-10.15i\", (int)-2147483648));\n\tPRINTF((\"%-10.5i\", 2147483647));\n\tPRINTF((\"%-15.i\", 0));\n\tPRINTF((\"%-15.10i\", 1));\n\tPRINTF((\"%-15.5i\", 10));\n\tPRINTF((\"%-15.2i\", -10));\n\tPRINTF((\"%-15.5i\", 5000));\n\tPRINTF((\"%-15.5i\", -5000));\n\tPRINTF((\"%-15.15i\", (int)-2147483648));\n\tPRINTF((\"%-15.5i\", 2147483647));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5i%i%4i%-10i-i5%-.3i\", (int)-2147483648, (int)-2141483648, (int)-2141483648, (int)-2141483648, (int)-2141483648));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%u, widths, precisions and -\");\n\n\tPRINTF((\"%-u\", 0));\n\tPRINTF((\"%-u\", 1));\n\tPRINTF((\"%-u\", 10));\n\tPRINTF((\"%-u\", -10));\n\tPRINTF((\"%-u\", 5000));\n\tPRINTF((\"%-u\", -5000));\n\tPRINTF((\"%-u\", (unsigned int)-1));\n\tPRINTF((\"%-u\", 2147483647));\n\tPRINTF((\"%-1u\", 0));\n\tPRINTF((\"%-1u\", 1));\n\tPRINTF((\"%-1u\", 10));\n\tPRINTF((\"%-1u\", -10));\n\tPRINTF((\"%-1u\", 5000));\n\tPRINTF((\"%-1u\", -5000));\n\tPRINTF((\"%-1u\", (unsigned int)-1));\n\tPRINTF((\"%-1u\", 2147483647));\n\tPRINTF((\"%-10u\", 0));\n\tPRINTF((\"%-10u\", 1));\n\tPRINTF((\"%-10u\", 10));\n\tPRINTF((\"%-10u\", -10));\n\tPRINTF((\"%-10u\", 5000));\n\tPRINTF((\"%-10u\", -5000));\n\tPRINTF((\"%-10u\", -1));\n\tPRINTF((\"%-10u\", 2147483647));\n\tPRINTF((\"%-.u\", 0));\n\tPRINTF((\"%-.1u\", 1));\n\tPRINTF((\"%-.2u\", 10));\n\tPRINTF((\"%-.3u\", -10));\n\tPRINTF((\"%-.4u\", 5000));\n\tPRINTF((\"%-.5u\", -5000));\n\tPRINTF((\"%-.6u\", -1));\n\tPRINTF((\"%-.7u\", 2147483647));\n\tPRINTF((\"%-1.8u\", 0));\n\tPRINTF((\"%-1.9u\", 1));\n\tPRINTF((\"%-1.10u\", 10));\n\tPRINTF((\"%-1.0u\", -10));\n\tPRINTF((\"%-1.6u\", 5000));\n\tPRINTF((\"%-1.4u\", -5000));\n\tPRINTF((\"%-1.10u\", -1));\n\tPRINTF((\"%-1.12u\", 2147483647));\n\tPRINTF((\"%-10.u\", 0));\n\tPRINTF((\"%-10.10u\", 1));\n\tPRINTF((\"%-10.5u\", 10));\n\tPRINTF((\"%-10.2u\", -10));\n\tPRINTF((\"%-10.5u\", 5000));\n\tPRINTF((\"%-10.5u\", -5000));\n\tPRINTF((\"%-10.15u\", -1));\n\tPRINTF((\"%-10.5u\", 2147483647));\n\tPRINTF((\"%-15.u\", 0));\n\tPRINTF((\"%-15.10u\", 1));\n\tPRINTF((\"%-15.5u\", 10));\n\tPRINTF((\"%-15.2u\", -10));\n\tPRINTF((\"%-15.5u\", 5000));\n\tPRINTF((\"%-15.5u\", -5000));\n\tPRINTF((\"%-15.15u\", -1));\n\tPRINTF((\"%-15.5u\", 2147483647));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5u%u%4u%-10u-u5%-.3u\", -1, -1, -1, -1, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions and -\");\n\n\tPRINTF((\"%-x\", 0));\n\tPRINTF((\"%-x\", 1));\n\tPRINTF((\"%-x\", 10));\n\tPRINTF((\"%-x\", -10));\n\tPRINTF((\"%-x\", 5000));\n\tPRINTF((\"%-x\", -5000));\n\tPRINTF((\"%-x\", -1));\n\tPRINTF((\"%-x\", 2147483647));\n\tPRINTF((\"%-1x\", 0));\n\tPRINTF((\"%-1x\", 1));\n\tPRINTF((\"%-1x\", 10));\n\tPRINTF((\"%-1x\", -10));\n\tPRINTF((\"%-1x\", 5000));\n\tPRINTF((\"%-1x\", -5000));\n\tPRINTF((\"%-1x\", -1));\n\tPRINTF((\"%-1x\", 2147483647));\n\tPRINTF((\"%-10x\", 0));\n\tPRINTF((\"%-10x\", 1));\n\tPRINTF((\"%-10x\", 10));\n\tPRINTF((\"%-10x\", -10));\n\tPRINTF((\"%-10x\", 5000));\n\tPRINTF((\"%-10x\", -5000));\n\tPRINTF((\"%-10x\", -1));\n\tPRINTF((\"%-10x\", 2147483647));\n\tPRINTF((\"%-.x\", 0));\n\tPRINTF((\"%-.1x\", 1));\n\tPRINTF((\"%-.2x\", 10));\n\tPRINTF((\"%-.3x\", -10));\n\tPRINTF((\"%-.4x\", 5000));\n\tPRINTF((\"%-.5x\", -5000));\n\tPRINTF((\"%-.6x\", -1));\n\tPRINTF((\"%-.7x\", 2147483647));\n\tPRINTF((\"%-1.8x\", 0));\n\tPRINTF((\"%-1.9x\", 1));\n\tPRINTF((\"%-1.10x\", 10));\n\tPRINTF((\"%-1.0x\", -10));\n\tPRINTF((\"%-1.6x\", 5000));\n\tPRINTF((\"%-1.4x\", -5000));\n\tPRINTF((\"%-1.10x\", -1));\n\tPRINTF((\"%-1.12x\", 2147483647));\n\tPRINTF((\"%-10.x\", 0));\n\tPRINTF((\"%-10.10x\", 1));\n\tPRINTF((\"%-10.5x\", 10));\n\tPRINTF((\"%-10.2x\", -10));\n\tPRINTF((\"%-10.5x\", 5000));\n\tPRINTF((\"%-10.5x\", -5000));\n\tPRINTF((\"%-10.15x\", -1));\n\tPRINTF((\"%-10.5x\", 2147483647));\n\tPRINTF((\"%-15.x\", 0));\n\tPRINTF((\"%-15.10x\", 1));\n\tPRINTF((\"%-15.5x\", 10));\n\tPRINTF((\"%-15.2x\", -10));\n\tPRINTF((\"%-15.5x\", 5000));\n\tPRINTF((\"%-15.5x\", -5000));\n\tPRINTF((\"%-15.15x\", -1));\n\tPRINTF((\"%-15.5x\", 2147483647));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5x%x%4x%-10x-x5%-.3x\", -1, -1, -1, -1, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions and -\");\n\n\tPRINTF((\"%-X\", 0));\n\tPRINTF((\"%-X\", 1));\n\tPRINTF((\"%-X\", 10));\n\tPRINTF((\"%-X\", -10));\n\tPRINTF((\"%-X\", 5000));\n\tPRINTF((\"%-X\", -5000));\n\tPRINTF((\"%-X\", -1));\n\tPRINTF((\"%-X\", 2147483647));\n\tPRINTF((\"%-1X\", 0));\n\tPRINTF((\"%-1X\", 1));\n\tPRINTF((\"%-1X\", 10));\n\tPRINTF((\"%-1X\", -10));\n\tPRINTF((\"%-1X\", 5000));\n\tPRINTF((\"%-1X\", -5000));\n\tPRINTF((\"%-1X\", -1));\n\tPRINTF((\"%-1X\", 2147483647));\n\tPRINTF((\"%-10X\", 0));\n\tPRINTF((\"%-10X\", 1));\n\tPRINTF((\"%-10X\", 10));\n\tPRINTF((\"%-10X\", -10));\n\tPRINTF((\"%-10X\", 5000));\n\tPRINTF((\"%-10X\", -5000));\n\tPRINTF((\"%-10X\", -1));\n\tPRINTF((\"%-10X\", 2147483647));\n\tPRINTF((\"%-.X\", 0));\n\tPRINTF((\"%-.1X\", 1));\n\tPRINTF((\"%-.2X\", 10));\n\tPRINTF((\"%-.3X\", -10));\n\tPRINTF((\"%-.4X\", 5000));\n\tPRINTF((\"%-.5X\", -5000));\n\tPRINTF((\"%-.6X\", -1));\n\tPRINTF((\"%-.7X\", 2147483647));\n\tPRINTF((\"%-1.8X\", 0));\n\tPRINTF((\"%-1.9X\", 1));\n\tPRINTF((\"%-1.10X\", 10));\n\tPRINTF((\"%-1.0X\", -10));\n\tPRINTF((\"%-1.6X\", 5000));\n\tPRINTF((\"%-1.4X\", -5000));\n\tPRINTF((\"%-1.10X\", -1));\n\tPRINTF((\"%-1.12X\", 2147483647));\n\tPRINTF((\"%-10.X\", 0));\n\tPRINTF((\"%-10.10X\", 1));\n\tPRINTF((\"%-10.5X\", 10));\n\tPRINTF((\"%-10.2X\", -10));\n\tPRINTF((\"%-10.5X\", 5000));\n\tPRINTF((\"%-10.5X\", -5000));\n\tPRINTF((\"%-10.15X\", -1));\n\tPRINTF((\"%-10.5X\", 2147483647));\n\tPRINTF((\"%-15.X\", 0));\n\tPRINTF((\"%-15.10X\", 1));\n\tPRINTF((\"%-15.5X\", 10));\n\tPRINTF((\"%-15.2X\", -10));\n\tPRINTF((\"%-15.5X\", 5000));\n\tPRINTF((\"%-15.5X\", -5000));\n\tPRINTF((\"%-15.15X\", -1));\n\tPRINTF((\"%-15.5X\", 2147483647));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", 3, 4, 5, 6, 7));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", 300000, 400000, 500000, 600000, 700000));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", -300000, -400000, -500000, -600000, -700000));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", 2147483647, 2141483647, 2141483647, 2141483647, 2141483647));\n\tPRINTF((\"%-4.5X%X%4X%-10X-X5%-.3X\", -1, -1, -1, -1, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_1)\n\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and 0\");\n\n\tPRINTF((\"%01d\", 0));\n\tPRINTF((\"%01d\", -4));\n\tPRINTF((\"%010d\", 42));\n\tPRINTF((\"%042d\", 42000));\n\tPRINTF((\"%020d\", -42000));\n\tPRINTF((\"wait for it... %050d\", 42));\n\tPRINTF((\"%020d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05d\", 2147483647));\n\tPRINTF((\"%030d\", 2147483647));\n\tPRINTF((\"%010d\", 2147483647));\n\tPRINTF((\"%05d\", (int)-2147483648));\n\tPRINTF((\"%030d\", (int)-2147483648));\n\tPRINTF((\"%010d\", (int)-2147483648));\n\tPRINTF((\"%011d\", (int)-2147483648));\n\tPRINTF((\"%012d\", (int)-2147483648));\n\tPRINTF((\"%012d, %20d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012d, %d, %2d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014d%020d%02d%0d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014dc%020ds%02dx%0du\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%01.d\", 0));\n\tPRINTF((\"%01.0d\", 0));\n\tPRINTF((\"%02.0d\", 0));\n\tPRINTF((\"%03.0d\", 0));\n\tPRINTF((\"%01.1d\", 0));\n\tPRINTF((\"%01.2d\", 0));\n\tPRINTF((\"%01.3d\", 0));\n\tPRINTF((\"%01.0d\", -4));\n\tPRINTF((\"%01.1d\", -4));\n\tPRINTF((\"%01.2d\", -4));\n\tPRINTF((\"%01.3d\", -4));\n\tPRINTF((\"%01.0d\", 4));\n\tPRINTF((\"%01.1d\", 4));\n\tPRINTF((\"%01.2d\", 4));\n\tPRINTF((\"%01.3d\", 4));\n\tPRINTF((\"%010.20d\", 42));\n\tPRINTF((\"%042.2d\", 42000));\n\tPRINTF((\"%042.20d\", 42000));\n\tPRINTF((\"%042.42d\", 42000));\n\tPRINTF((\"%042.52d\", 42000));\n\tPRINTF((\"%020.10d\", -42000));\n\tPRINTF((\"%020.20d\", -42000));\n\tPRINTF((\"%020.30d\", -42000));\n\tPRINTF((\"wait for it... %050.50d\", 42));\n\tPRINTF((\"%020.19d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21d is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05d\", 2147483647));\n\tPRINTF((\"%030d\", 2147483647));\n\tPRINTF((\"%09d\", 2147483647));\n\tPRINTF((\"%010d\", 2147483647));\n\tPRINTF((\"%011d\", 2147483647));\n\tPRINTF((\"%05d\", (int)-2147483648));\n\tPRINTF((\"%030d\", (int)-2147483648));\n\tPRINTF((\"%010d\", (int)-2147483648));\n\tPRINTF((\"%011d\", (int)-2147483648));\n\tPRINTF((\"%012d\", (int)-2147483648));\n\tPRINTF((\"%012d, %20d, %2d, %000042d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012d, %d, %002d, %42d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%0014.2d%020d%0002.d%000.5d\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014dc%020ds%02dx%0du\", (int)-2147483648, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%i, widths, precisions and 0\");\n\n\tPRINTF((\"%01i\", 0));\n\tPRINTF((\"%01i\", -4));\n\tPRINTF((\"%010i\", 42));\n\tPRINTF((\"%042i\", 42000));\n\tPRINTF((\"%020i\", -42000));\n\tPRINTF((\"wait for it... %050i\", 42));\n\tPRINTF((\"%020i is how many tests are going to be maie\", 8000));\n\tPRINTF((\"%05i\", 2147483647));\n\tPRINTF((\"%030i\", 2147483647));\n\tPRINTF((\"%010i\", 2147483647));\n\tPRINTF((\"%05i\", (int)-2147483648));\n\tPRINTF((\"%030i\", (int)-2147483648));\n\tPRINTF((\"%010i\", (int)-2147483648));\n\tPRINTF((\"%011i\", (int)-2147483648));\n\tPRINTF((\"%012i\", (int)-2147483648));\n\tPRINTF((\"%012i, %20i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012i, %i, %2i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014i%020i%02i%0i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014ic%020is%02ix%0iu\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%01.i\", 0));\n\tPRINTF((\"%01.0i\", 0));\n\tPRINTF((\"%02.0i\", 0));\n\tPRINTF((\"%03.0i\", 0));\n\tPRINTF((\"%01.1i\", 0));\n\tPRINTF((\"%01.2i\", 0));\n\tPRINTF((\"%01.3i\", 0));\n\tPRINTF((\"%01.0i\", -4));\n\tPRINTF((\"%01.1i\", -4));\n\tPRINTF((\"%01.2i\", -4));\n\tPRINTF((\"%01.3i\", -4));\n\tPRINTF((\"%01.0i\", 4));\n\tPRINTF((\"%01.1i\", 4));\n\tPRINTF((\"%01.2i\", 4));\n\tPRINTF((\"%01.3i\", 4));\n\tPRINTF((\"%010.20i\", 42));\n\tPRINTF((\"%042.2i\", 42000));\n\tPRINTF((\"%042.20i\", 42000));\n\tPRINTF((\"%042.42i\", 42000));\n\tPRINTF((\"%042.52i\", 42000));\n\tPRINTF((\"%020.10i\", -42000));\n\tPRINTF((\"%020.20i\", -42000));\n\tPRINTF((\"%020.30i\", -42000));\n\tPRINTF((\"wait for it... %050.50i\", 42));\n\tPRINTF((\"%020.19i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21i is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05i\", 2147483647));\n\tPRINTF((\"%030i\", 2147483647));\n\tPRINTF((\"%09i\", 2147483647));\n\tPRINTF((\"%010i\", 2147483647));\n\tPRINTF((\"%011i\", 2147483647));\n\tPRINTF((\"%05i\", (int)-2147483648));\n\tPRINTF((\"%030i\", (int)-2147483648));\n\tPRINTF((\"%010i\", (int)-2147483648));\n\tPRINTF((\"%011i\", (int)-2147483648));\n\tPRINTF((\"%012i\", (int)-2147483648));\n\tPRINTF((\"%012i, %20i, %2i, %000042i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%012i, %i, %002i, %42i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%0014.2i%020i%0002.i%000.5i\", (int)-2147483648, 3, 30, -1));\n\tPRINTF((\"%014ic%020is%02ix%0iu\", (int)-2147483648, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_U && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%u, widths, precisions and 0\");\n\n\tPRINTF((\"%01u\", 0));\n\tPRINTF((\"%01u\", -4));\n\tPRINTF((\"%010u\", 42));\n\tPRINTF((\"%042u\", 42000));\n\tPRINTF((\"%020u\", -42000));\n\tPRINTF((\"wait for it... %050u\", 42));\n\tPRINTF((\"%020u is how many tests are going to be maie\", 8000));\n\tPRINTF((\"%05u\", 2147483647));\n\tPRINTF((\"%030u\", 2147483647));\n\tPRINTF((\"%010u\", 2147483647));\n\tPRINTF((\"%05u\", -1));\n\tPRINTF((\"%030u\", -1));\n\tPRINTF((\"%010u\", -1));\n\tPRINTF((\"%011u\", -1));\n\tPRINTF((\"%012u\", -1));\n\tPRINTF((\"%012u, %20u, %2u, %42u\", -1, 3, 30, -1));\n\tPRINTF((\"%012u, %u, %2u, %42u\", -1, 3, 30, -1));\n\tPRINTF((\"%014u%020u%02u%0u\", -1, 3, 30, -1));\n\tPRINTF((\"%014uc%020us%02ux%0ui\", -1, 3, 30, -1));\n\tPRINTF((\"%01.u\", 0));\n\tPRINTF((\"%01.0u\", 0));\n\tPRINTF((\"%02.0u\", 0));\n\tPRINTF((\"%03.0u\", 0));\n\tPRINTF((\"%01.1u\", 0));\n\tPRINTF((\"%01.2u\", 0));\n\tPRINTF((\"%01.3u\", 0));\n\tPRINTF((\"%01.0u\", 4));\n\tPRINTF((\"%01.1u\", 4));\n\tPRINTF((\"%01.2u\", 4));\n\tPRINTF((\"%01.3u\", 4));\n\tPRINTF((\"%010.20u\", 42));\n\tPRINTF((\"%042.2u\", 42000));\n\tPRINTF((\"%042.20u\", 42000));\n\tPRINTF((\"%042.42u\", 42000));\n\tPRINTF((\"%042.52u\", 42000));\n\tPRINTF((\"wait for it... %050.50u\", 42));\n\tPRINTF((\"%020.19u is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20u is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21u is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05u\", 2147483647));\n\tPRINTF((\"%030u\", 2147483647));\n\tPRINTF((\"%09u\", 2147483647));\n\tPRINTF((\"%010u\", 2147483647));\n\tPRINTF((\"%011u\", 2147483647));\n\tPRINTF((\"%05u\",  -1));\n\tPRINTF((\"%030u\", -1));\n\tPRINTF((\"%010u\", -1));\n\tPRINTF((\"%011u\", -1));\n\tPRINTF((\"%012u\", -1));\n\tPRINTF((\"%012u, %20u, %2u, %000042u\", -1, 3, 30, -1));\n\tPRINTF((\"%012u, %u, %002u, %42u\", -1, 3, 30, -1));\n\tPRINTF((\"%0014.2u%020u%0002.u%000.5u\", -1, 3, 30, -1));\n\tPRINTF((\"%014uc%020us%02ux%0ui\", -1, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions and 0\");\n\n\tPRINTF((\"%01x\", 0));\n\tPRINTF((\"%01x\", -4));\n\tPRINTF((\"%010x\", 42));\n\tPRINTF((\"%042x\", 42000));\n\tPRINTF((\"%020x\", -42000));\n\tPRINTF((\"wait for it... %050x\", 42));\n\tPRINTF((\"%020x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05x\", 2147483647));\n\tPRINTF((\"%030x\", 2147483647));\n\tPRINTF((\"%010x\", 2147483647));\n\tPRINTF((\"%05x\", -1));\n\tPRINTF((\"%030x\", -1));\n\tPRINTF((\"%010x\", -1));\n\tPRINTF((\"%011x\", -1));\n\tPRINTF((\"%012x\", -1));\n\tPRINTF((\"%012x, %20x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%012x, %x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%014x%020x%02x%0x\", -1, 3, 30, -1));\n\tPRINTF((\"%014xc%020xs%02xX%0xi\", -1, 3, 30, -1));\n\tPRINTF((\"%01.x\", 0));\n\tPRINTF((\"%01.0x\", 0));\n\tPRINTF((\"%02.0x\", 0));\n\tPRINTF((\"%03.0x\", 0));\n\tPRINTF((\"%01.1x\", 0));\n\tPRINTF((\"%01.2x\", 0));\n\tPRINTF((\"%01.3x\", 0));\n\tPRINTF((\"%01.0x\", 4));\n\tPRINTF((\"%01.1x\", 4));\n\tPRINTF((\"%01.2x\", 4));\n\tPRINTF((\"%01.3x\", 4));\n\tPRINTF((\"%010.20x\", 42));\n\tPRINTF((\"%042.2x\", 42000));\n\tPRINTF((\"%042.20x\", 42000));\n\tPRINTF((\"%042.42x\", 42000));\n\tPRINTF((\"%042.52x\", 42000));\n\tPRINTF((\"wait for it... %050.50x\", 42));\n\tPRINTF((\"%020.19x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05x\", 2147483647));\n\tPRINTF((\"%030x\", 2147483647));\n\tPRINTF((\"%09x\", 2147483647));\n\tPRINTF((\"%010x\", 2147483647));\n\tPRINTF((\"%011x\", 2147483647));\n\tPRINTF((\"%05x\",  -1));\n\tPRINTF((\"%030x\", -1));\n\tPRINTF((\"%010x\", -1));\n\tPRINTF((\"%011x\", -1));\n\tPRINTF((\"%012x\", -1));\n\tPRINTF((\"%012x, %20x, %2x, %000042x\", -1, 3, 30, -1));\n\tPRINTF((\"%012x, %x, %002x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%0014.2x%020x%0002.x%000.5x\", -1, 3, 30, -1));\n\tPRINTF((\"%014xc%020xs%02xx%0xi\", -1, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_1) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_1)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions and 0\");\n\n\tPRINTF((\"%01X\", 0));\n\tPRINTF((\"%01X\", -4));\n\tPRINTF((\"%010X\", 42));\n\tPRINTF((\"%042X\", 42000));\n\tPRINTF((\"%020X\", -42000));\n\tPRINTF((\"wait for it... %050X\", 42));\n\tPRINTF((\"%020X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05X\", 2147483647));\n\tPRINTF((\"%030X\", 2147483647));\n\tPRINTF((\"%010X\", 2147483647));\n\tPRINTF((\"%05X\", -1));\n\tPRINTF((\"%030X\", -1));\n\tPRINTF((\"%010X\", -1));\n\tPRINTF((\"%011X\", -1));\n\tPRINTF((\"%012X\", -1));\n\tPRINTF((\"%012X, %20X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%012X, %X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%014X%020X%02X%0X\", -1, 3, 30, -1));\n\tPRINTF((\"%014Xc%020Xs%02XX%0Xi\", -1, 3, 30, -1));\n\tPRINTF((\"%01.X\", 0));\n\tPRINTF((\"%01.0X\", 0));\n\tPRINTF((\"%02.0X\", 0));\n\tPRINTF((\"%03.0X\", 0));\n\tPRINTF((\"%01.1X\", 0));\n\tPRINTF((\"%01.2X\", 0));\n\tPRINTF((\"%01.3X\", 0));\n\tPRINTF((\"%01.0X\", 4));\n\tPRINTF((\"%01.1X\", 4));\n\tPRINTF((\"%01.3X\", 4));\n\tPRINTF((\"%010.20X\", 42));\n\tPRINTF((\"%042.2X\", 42000));\n\tPRINTF((\"%042.20X\", 42000));\n\tPRINTF((\"%042.42X\", 42000));\n\tPRINTF((\"%042.52X\", 42000));\n\tPRINTF((\"wait for it... %050.50X\", 42));\n\tPRINTF((\"%020.19X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%020.21X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%05X\", 2147483647));\n\tPRINTF((\"%030X\", 2147483647));\n\tPRINTF((\"%09X\", 2147483647));\n\tPRINTF((\"%010X\", 2147483647));\n\tPRINTF((\"%011X\", 2147483647));\n\tPRINTF((\"%05X\",  -1));\n\tPRINTF((\"%030.20X\", -1));\n\tPRINTF((\"%010.11X\", -1));\n\tPRINTF((\"%011.11X\", -1));\n\tPRINTF((\"%012.11X\", -1));\n\tPRINTF((\"%012X, %20X, %2X, %000042.20X\", -1, 3, 30, -1));\n\tPRINTF((\"%012X, %X, %002X, %42.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%0014.2X%020X%0002.X%000.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%014Xc%020Xs%02.5XX%0.Xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions and #\");\n\n\tPRINTF((\"%#1x\", 0));\n\tPRINTF((\"%#1x\", -4));\n\tPRINTF((\"%#10x\", 42));\n\tPRINTF((\"%#42x\", 42000));\n\tPRINTF((\"%#20x\", -42000));\n\tPRINTF((\"wait for it... %#50x\", 42));\n\tPRINTF((\"%#20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#5x\", 2147483647));\n\tPRINTF((\"%#30x\", 2147483647));\n\tPRINTF((\"%#10x\", 2147483647));\n\tPRINTF((\"%#5x\", -1));\n\tPRINTF((\"%#30x\", -1));\n\tPRINTF((\"%#10x\", -1));\n\tPRINTF((\"%#11x\", -1));\n\tPRINTF((\"%#12x\", -1));\n\tPRINTF((\"%#12x, %20x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#12x, %x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#14x%#20x%#2x%#x\", -1, 3, 30, -1));\n\tPRINTF((\"%#14xc%#20xs%#2xX%#xi\", -1, 3, 30, -1));\n\tPRINTF((\"%#1.x\", 0));\n\tPRINTF((\"%#1.0x\", 0));\n\tPRINTF((\"%#2.0x\", 0));\n\tPRINTF((\"%#3.0x\", 0));\n\tPRINTF((\"%#1.1x\", 0));\n\tPRINTF((\"%#1.2x\", 0));\n\tPRINTF((\"%#1.3x\", 0));\n\tPRINTF((\"%#1.0x\", 4));\n\tPRINTF((\"%#1.1x\", 4));\n\tPRINTF((\"%#1.2x\", 4));\n\tPRINTF((\"%#1.3x\", 4));\n\tPRINTF((\"%#10.20x\", 42));\n\tPRINTF((\"%#42.2x\", 42000));\n\tPRINTF((\"%#42.20x\", 42000));\n\tPRINTF((\"%#42.42x\", 42000));\n\tPRINTF((\"%#042.52x\", 42000));\n\tPRINTF((\"wait for it... %#050.50x\", 42));\n\tPRINTF((\"%#20.19x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#20.20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#20.21x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#5x\", 2147483647));\n\tPRINTF((\"%#30x\", 2147483647));\n\tPRINTF((\"%#9x\", 2147483647));\n\tPRINTF((\"%#10x\", 2147483647));\n\tPRINTF((\"%#11x\", 2147483647));\n\tPRINTF((\"%#5x\",  -1));\n\tPRINTF((\"%#30x\", -1));\n\tPRINTF((\"%#10x\", -1));\n\tPRINTF((\"%#11x\", -1));\n\tPRINTF((\"%#12x\", -1));\n\tPRINTF((\"%#12x, %20x, %2x, %000042x\", -1, 3, 30, -1));\n\tPRINTF((\"%#12x, %x, %002x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#014.2x%#20x%###2.x%###.5x\", -1, 3, 30, -1));\n\tPRINTF((\"%#14xc%#20xs%#2xx%#xi\", -1, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions 0 and #\");\n\n\tPRINTF((\"%#01x\", 0));\n\tPRINTF((\"%#01x\", -4));\n\tPRINTF((\"%#010x\", 42));\n\tPRINTF((\"%#042x\", 42000));\n\tPRINTF((\"%#020x\", -42000));\n\tPRINTF((\"wait for it... %#050x\", 42));\n\tPRINTF((\"%#020x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#05x\", 2147483647));\n\tPRINTF((\"%#030x\", 2147483647));\n\tPRINTF((\"%#010x\", 2147483647));\n\tPRINTF((\"%#05x\", -1));\n\tPRINTF((\"%#030x\", -1));\n\tPRINTF((\"%#010x\", -1));\n\tPRINTF((\"%#011x\", -1));\n\tPRINTF((\"%#012x\", -1));\n\tPRINTF((\"%#012x, %20x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#012x, %x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#014x%#020x%#02x%#0x\", -1, 3, 30, -1));\n\tPRINTF((\"%#014xc%#020xs%#02xX%#0xi\", -1, 3, 30, -1));\n\tPRINTF((\"%#01.x\", 0));\n\tPRINTF((\"%#01.0x\", 0));\n\tPRINTF((\"%#02.0x\", 0));\n\tPRINTF((\"%#03.0x\", 0));\n\tPRINTF((\"%#01.1x\", 0));\n\tPRINTF((\"%#01.2x\", 0));\n\tPRINTF((\"%#01.3x\", 0));\n\tPRINTF((\"%#01.0x\", 4));\n\tPRINTF((\"%#01.1x\", 4));\n\tPRINTF((\"%#01.2x\", 4));\n\tPRINTF((\"%#01.3x\", 4));\n\tPRINTF((\"%#010.20x\", 42));\n\tPRINTF((\"%#042.2x\", 42000));\n\tPRINTF((\"%#042.20x\", 42000));\n\tPRINTF((\"%#042.42x\", 42000));\n\tPRINTF((\"%#42.52x\", 42000));\n\tPRINTF((\"wait for it... %#50.50x\", 42));\n\tPRINTF((\"%#020.19x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#020.20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#020.21x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#05x\", 2147483647));\n\tPRINTF((\"%#030x\", 2147483647));\n\tPRINTF((\"%#09x\", 2147483647));\n\tPRINTF((\"%#010x\", 2147483647));\n\tPRINTF((\"%#011x\", 2147483647));\n\tPRINTF((\"%#05x\",  -1));\n\tPRINTF((\"%#030x\", -1));\n\tPRINTF((\"%#010x\", -1));\n\tPRINTF((\"%#011x\", -1));\n\tPRINTF((\"%#012x\", -1));\n\tPRINTF((\"%#012x, %20x, %2x, %000042x\", -1, 3, 30, -1));\n\tPRINTF((\"%#012x, %x, %002x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#0014.2x%#020x%#0#0#02.x%#0#0#0.5x\", -1, 3, 30, -1));\n\tPRINTF((\"%#014xc%#020xs%#02xx%#0xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%x, widths, precisions, - and #\");\n\n\tPRINTF((\"%#-1x\", 0));\n\tPRINTF((\"%#-1x\", -4));\n\tPRINTF((\"%#-10x\", 42));\n\tPRINTF((\"%#-42x\", 42000));\n\tPRINTF((\"%#-20x\", -42000));\n\tPRINTF((\"wait for it... %#-50x\", 42));\n\tPRINTF((\"%#-20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-5x\", 2147483647));\n\tPRINTF((\"%#-30x\", 2147483647));\n\tPRINTF((\"%#-10x\", 2147483647));\n\tPRINTF((\"%#-5x\", -1));\n\tPRINTF((\"%#-30x\", -1));\n\tPRINTF((\"%#-10x\", -1));\n\tPRINTF((\"%#-11x\", -1));\n\tPRINTF((\"%#-12x\", -1));\n\tPRINTF((\"%#-12x, %20x, %2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#-12x, %x, %#02x, %#042x\", -1, 3, 30, -1));\n\tPRINTF((\"%#-14x%020x%02x%0x\", -1, 3, 30, -1));\n\tPRINTF((\"%#-14xc%020xs%02xx%0xi\", -1, 3, 30, -1));\n\tPRINTF((\"%#-1.x\", 0));\n\tPRINTF((\"%#-1.0x\", 0));\n\tPRINTF((\"%#-2.0x\", 0));\n\tPRINTF((\"%#-3.0x\", 0));\n\tPRINTF((\"%#-1.1x\", 0));\n\tPRINTF((\"%#-1.2x\", 0));\n\tPRINTF((\"%#-1.3x\", 0));\n\tPRINTF((\"%#-1.0x\", 4));\n\tPRINTF((\"%#-1.1x\", 4));\n\tPRINTF((\"%#-1.3x\", 4));\n\tPRINTF((\"%#-10.20x\", 42));\n\tPRINTF((\"%#-42.2x\", 42000));\n\tPRINTF((\"%#-42.20x\", 42000));\n\tPRINTF((\"%#-42.42x\", 42000));\n\tPRINTF((\"%#-42.52x\", 42000));\n\tPRINTF((\"wait for it... %#-50.50x\", 42));\n\tPRINTF((\"%#-20.19x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-20.20x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-20.21x is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-5x\", 2147483647));\n\tPRINTF((\"%#-30x\", 2147483647));\n\tPRINTF((\"%#-9x\", 2147483647));\n\tPRINTF((\"%#-10x\", 2147483647));\n\tPRINTF((\"%#-11x\", 2147483647));\n\tPRINTF((\"%#-5x\",  -1));\n\tPRINTF((\"%#-30x\", -1));\n\tPRINTF((\"%#-10x\", -1));\n\tPRINTF((\"%#-11x\", -1));\n\tPRINTF((\"%#-12x\", -1));\n\tPRINTF((\"%#-12x, %20x, %2x, %#-#-#-#-42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#-12x, %x, %#-#-2x, %42x\", -1, 3, 30, -1));\n\tPRINTF((\"%#-#-14.2x%#-20x%#-#-#-2.x%#-#-#-.5x\", -1, 3, 30, -1));\n\tPRINTF((\"%#-14xc%-20xs%#-2xX%#-xi\", -1, 3, 30, -1));\n\t\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions and #\");\n\n\tPRINTF((\"%#1X\", 0));\n\tPRINTF((\"%#1X\", -4));\n\tPRINTF((\"%#10X\", 42));\n\tPRINTF((\"%#42X\", 42000));\n\tPRINTF((\"%#20X\", -42000));\n\tPRINTF((\"wait for it... %#50X\", 42));\n\tPRINTF((\"%#20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#5X\", 2147483647));\n\tPRINTF((\"%#30X\", 2147483647));\n\tPRINTF((\"%#10X\", 2147483647));\n\tPRINTF((\"%#5X\", -1));\n\tPRINTF((\"%#30X\", -1));\n\tPRINTF((\"%#10X\", -1));\n\tPRINTF((\"%#11X\", -1));\n\tPRINTF((\"%#12X\", -1));\n\tPRINTF((\"%#12X, %20X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#12X, %X, %#2X, %#42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#14X%020X%02X%0X\", -1, 3, 30, -1));\n\tPRINTF((\"%#14Xc%020Xs%02XX%0Xi\", -1, 3, 30, -1));\n\tPRINTF((\"%#1.X\", 0));\n\tPRINTF((\"%#1.0X\", 0));\n\tPRINTF((\"%#2.0X\", 0));\n\tPRINTF((\"%#3.0X\", 0));\n\tPRINTF((\"%#1.1X\", 0));\n\tPRINTF((\"%#1.2X\", 0));\n\tPRINTF((\"%#1.3X\", 0));\n\tPRINTF((\"%#1.0X\", 4));\n\tPRINTF((\"%#1.1X\", 4));\n\tPRINTF((\"%#1.3X\", 4));\n\tPRINTF((\"%#10.20X\", 42));\n\tPRINTF((\"%#42.2X\", 42000));\n\tPRINTF((\"%#42.20X\", 42000));\n\tPRINTF((\"%#42.42X\", 42000));\n\tPRINTF((\"%#42.52X\", 42000));\n\tPRINTF((\"wait for it... %#50.50X\", 42));\n\tPRINTF((\"%#20.19X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#20.20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#20.21X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#5X\", 2147483647));\n\tPRINTF((\"%#30X\", 2147483647));\n\tPRINTF((\"%#9X\", 2147483647));\n\tPRINTF((\"%#10X\", 2147483647));\n\tPRINTF((\"%#11X\", 2147483647));\n\tPRINTF((\"%#5X\",  -1));\n\tPRINTF((\"%#30X\", -1));\n\tPRINTF((\"%#10X\", -1));\n\tPRINTF((\"%#11X\", -1));\n\tPRINTF((\"%#12X\", -1));\n\tPRINTF((\"%#12X, %20X, %2X, %####42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#12X, %X, %##2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%##14.2X%#20X%###2.X%###.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%#14Xc%020Xs%#2XX%#Xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions, 0 and #\");\n\n\tPRINTF((\"%#01X\", 0));\n\tPRINTF((\"%#01X\", -4));\n\tPRINTF((\"%#010X\", 42));\n\tPRINTF((\"%#042X\", 42000));\n\tPRINTF((\"%#020X\", -42000));\n\tPRINTF((\"wait for it... %#050X\", 42));\n\tPRINTF((\"%#020X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#05X\", 2147483647));\n\tPRINTF((\"%#030X\", 2147483647));\n\tPRINTF((\"%#010X\", 2147483647));\n\tPRINTF((\"%#05X\", -1));\n\tPRINTF((\"%#030X\", -1));\n\tPRINTF((\"%#010X\", -1));\n\tPRINTF((\"%#011X\", -1));\n\tPRINTF((\"%#012X\", -1));\n\tPRINTF((\"%#012X, %20X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#012X, %X, %#02X, %#042X\", -1, 3, 30, -1));\n\tPRINTF((\"%#014X%020X%02X%0X\", -1, 3, 30, -1));\n\tPRINTF((\"%#014Xc%020Xs%02XX%0Xi\", -1, 3, 30, -1));\n\tPRINTF((\"%#01.X\", 0));\n\tPRINTF((\"%#01.0X\", 0));\n\tPRINTF((\"%#02.0X\", 0));\n\tPRINTF((\"%#03.0X\", 0));\n\tPRINTF((\"%#01.1X\", 0));\n\tPRINTF((\"%#01.2X\", 0));\n\tPRINTF((\"%#01.3X\", 0));\n\tPRINTF((\"%#01.0X\", 4));\n\tPRINTF((\"%#01.1X\", 4));\n\tPRINTF((\"%#01.3X\", 4));\n\tPRINTF((\"%#010.20X\", 42));\n\tPRINTF((\"%#042.2X\", 42000));\n\tPRINTF((\"%#042.20X\", 42000));\n\tPRINTF((\"%#042.42X\", 42000));\n\tPRINTF((\"%#042.52X\", 42000));\n\tPRINTF((\"wait for it... %#050.50X\", 42));\n\tPRINTF((\"%#020.19X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#020.20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#020.21X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#05X\", 2147483647));\n\tPRINTF((\"%#030X\", 2147483647));\n\tPRINTF((\"%#09X\", 2147483647));\n\tPRINTF((\"%#010X\", 2147483647));\n\tPRINTF((\"%#011X\", 2147483647));\n\tPRINTF((\"%#05X\",  -1));\n\tPRINTF((\"%#030X\", -1));\n\tPRINTF((\"%#010X\", -1));\n\tPRINTF((\"%#011X\", -1));\n\tPRINTF((\"%#012X\", -1));\n\tPRINTF((\"%#012X, %20X, %2X, %#0#0#0#042X\", -1, 3, 30, -1));\n\tPRINTF((\"%#012X, %X, %#0#02X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#0#014.2X%#020X%#0#0#02.X%#0#0#0.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%#014Xc%020Xs%#02XX%#0Xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_BIG_X && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%X, widths, precisions, - and #\");\n\n\tPRINTF((\"%#-1X\", 0));\n\tPRINTF((\"%#-1X\", -4));\n\tPRINTF((\"%#-10X\", 42));\n\tPRINTF((\"%#-42X\", 42000));\n\tPRINTF((\"%#-20X\", -42000));\n\tPRINTF((\"wait for it... %#-50X\", 42));\n\tPRINTF((\"%#-20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-5X\", 2147483647));\n\tPRINTF((\"%#-30X\", 2147483647));\n\tPRINTF((\"%#-10X\", 2147483647));\n\tPRINTF((\"%#-5X\", -1));\n\tPRINTF((\"%#-30X\", -1));\n\tPRINTF((\"%#-10X\", -1));\n\tPRINTF((\"%#-11X\", -1));\n\tPRINTF((\"%#-12X\", -1));\n\tPRINTF((\"%#-12X, %20X, %2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#-12X, %X, %#02X, %#042X\", -1, 3, 30, -1));\n\tPRINTF((\"%#-14X%020X%02X%0X\", -1, 3, 30, -1));\n\tPRINTF((\"%#-14Xc%020Xs%02XX%0Xi\", -1, 3, 30, -1));\n\tPRINTF((\"%#-1.X\", 0));\n\tPRINTF((\"%#-1.0X\", 0));\n\tPRINTF((\"%#-2.0X\", 0));\n\tPRINTF((\"%#-3.0X\", 0));\n\tPRINTF((\"%#-1.1X\", 0));\n\tPRINTF((\"%#-1.2X\", 0));\n\tPRINTF((\"%#-1.3X\", 0));\n\tPRINTF((\"%#-1.0X\", 4));\n\tPRINTF((\"%#-1.1X\", 4));\n\tPRINTF((\"%#-1.3X\", 4));\n\tPRINTF((\"%#-10.20X\", 42));\n\tPRINTF((\"%#-42.2X\", 42000));\n\tPRINTF((\"%#-42.20X\", 42000));\n\tPRINTF((\"%#-42.42X\", 42000));\n\tPRINTF((\"%#-42.52X\", 42000));\n\tPRINTF((\"wait for it... %#-50.50X\", 42));\n\tPRINTF((\"%#-20.19X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-20.20X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-20.21X is how many tests are going to be made\", 8000));\n\tPRINTF((\"%#-5X\", 2147483647));\n\tPRINTF((\"%#-30X\", 2147483647));\n\tPRINTF((\"%#-9X\", 2147483647));\n\tPRINTF((\"%#-10X\", 2147483647));\n\tPRINTF((\"%#-11X\", 2147483647));\n\tPRINTF((\"%#-5X\",  -1));\n\tPRINTF((\"%#-30X\", -1));\n\tPRINTF((\"%#-10X\", -1));\n\tPRINTF((\"%#-11X\", -1));\n\tPRINTF((\"%#-12X\", -1));\n\tPRINTF((\"%#-12X, %20X, %2X, %#-#-#-#-42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#-12X, %X, %#-#-2X, %42X\", -1, 3, 30, -1));\n\tPRINTF((\"%#-#-14.2X%#-20X%#-#-#-2.X%#-#-#-.5X\", -1, 3, 30, -1));\n\tPRINTF((\"%#-14Xc%-20Xs%#-2XX%#-Xi\", -1, 3, 30, -1));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and ' '\");\n\n\tPRINTF((\"% d\", 0));\n\tPRINTF((\"% d\", 1));\n\tPRINTF((\"% d\", -1));\n\tPRINTF((\"%    d\", 0));\n\tPRINTF((\"%   d\", 1));\n\tPRINTF((\"%  d\", -1));\n\tPRINTF((\"% d\", 2147483647));\n\tPRINTF((\"% d\", (int)-2147483648));\n\tPRINTF((\"%   d\", 2147483647));\n\tPRINTF((\"%  d\", (int)-2147483648));\n\tPRINTF((\"% d\", 2178647));\n\tPRINTF((\"% d\", (int)-2144348));\n\tPRINTF((\"%   d\", 2147837));\n\tPRINTF((\"%  d\", (int)-2147486));\n\tPRINTF((\"% 1d\", 0));\n\tPRINTF((\"%  1d\", -1));\n\tPRINTF((\"% 2d\", 1));\n\tPRINTF((\"% 3d\", -1));\n\tPRINTF((\"%    4d\", 0));\n\tPRINTF((\"%   5d\", 1));\n\tPRINTF((\"%  2d\", -1));\n\tPRINTF((\"% 9d\", 2147483647));\n\tPRINTF((\"% 10d\", 2147483647));\n\tPRINTF((\"% 11d\", 2147483647));\n\tPRINTF((\"% 9d\", (int)-2147483648));\n\tPRINTF((\"%   10d\", (int)-2147483648));\n\tPRINTF((\"%  11d\", (int)-2147483648));\n\tPRINTF((\"%  11d\", (int)-2147483648));\n\tPRINTF((\"%     12d\", (int)-2147483648));\n\tPRINTF((\"% .d\", 0));\n\tPRINTF((\"% .0d\", 0));\n\tPRINTF((\"% .1d\", 0));\n\tPRINTF((\"% .2d\", 0));\n\tPRINTF((\"% .0d\", 1));\n\tPRINTF((\"% .1d\", 1));\n\tPRINTF((\"% .d\", -1));\n\tPRINTF((\"%   .3d\", 1));\n\tPRINTF((\"%  .1d\", -1));\n\tPRINTF((\"%  .3d\", -1));\n\tPRINTF((\"% .10d\", 2147483647));\n\tPRINTF((\"% .11d\", 2147483647));\n\tPRINTF((\"% .9d\", (int)-2147483648));\n\tPRINTF((\"%   .9d\", 2147483647));\n\tPRINTF((\"%  .10d\", (int)-2147483648));\n\tPRINTF((\"% .8d\", 2178647));\n\tPRINTF((\"% .9d\", (int)-2144348));\n\tPRINTF((\"%   .7d\", 2147837));\n\tPRINTF((\"%  .8d\", (int)-2147486));\n\tPRINTF((\"%  .7d\", (int)-2147486));\n\tPRINTF((\"% 1.0d\", 0));\n\tPRINTF((\"% 1.1d\", 0));\n\tPRINTF((\"% 1.2d\", 0));\n\tPRINTF((\"%  1.1d\", -1));\n\tPRINTF((\"%  1.2d\", -1));\n\tPRINTF((\"% 2.0d\", 1));\n\tPRINTF((\"% 3.3d\", -1));\n\tPRINTF((\"%    4.8d\", 0));\n\tPRINTF((\"%  5.d\", 1));\n\tPRINTF((\"%  2.9d\", -1));\n\tPRINTF((\"% 9.8d\", 2147483647));\n\tPRINTF((\"% 10.11d\", 2147483647));\n\tPRINTF((\"% 11.9d\", 2147483647));\n\tPRINTF((\"% 9.9d\", (int)-2147483648));\n\tPRINTF((\"%   10.9d\", (int)-2147483648));\n\tPRINTF((\"%  11.9di\", (int)-2147483648));\n\tPRINTF((\"%  11.12ds\", (int)-2147483648));\n\tPRINTF((\"%   12.0d\", (int)-2147483648));\n\tPRINTF((\"life %   12.0d is %d craz% dy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%   9.12d is % 22d craz%22dy\", -333, 2, -30));\n\tPRINTF((\"Thank %  d you vim for allowing % .dme ed%   dit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions, ' ' and 0\");\n\n\tPRINTF((\"%0 d\", 0));\n\tPRINTF((\"%0 d\", 1));\n\tPRINTF((\"%0 d\", -1));\n\tPRINTF((\"%0    d\", 0));\n\tPRINTF((\"%0   d\", 1));\n\tPRINTF((\"%0  d\", -1));\n\tPRINTF((\"%0 d\", 2147483647));\n\tPRINTF((\"%0 d\", (int)-2147483648));\n\tPRINTF((\"%0   d\", 2147483647));\n\tPRINTF((\"%0  d\", (int)-2147483648));\n\tPRINTF((\"%0 d\", 2178647));\n\tPRINTF((\"%0 d\", (int)-2144348));\n\tPRINTF((\"%0   d\", 2147837));\n\tPRINTF((\"%0  d\", (int)-2147486));\n\tPRINTF((\"%0 1d\", 0));\n\tPRINTF((\"%0  1d\", -1));\n\tPRINTF((\"%0 2d\", 1));\n\tPRINTF((\"%0 3d\", -1));\n\tPRINTF((\"%0    4d\", 0));\n\tPRINTF((\"%0   5d\", 1));\n\tPRINTF((\"%0  2d\", -1));\n\tPRINTF((\"%0 9d\", 2147483647));\n\tPRINTF((\"%0 10d\", 2147483647));\n\tPRINTF((\"%0 11d\", 2147483647));\n\tPRINTF((\"%0 13d\", 2147483647));\n\tPRINTF((\"%0 16d\", 2147483647));\n\tPRINTF((\"%0 9d\", (int)-2147483648));\n\tPRINTF((\"%0   10d\", (int)-2147483648));\n\tPRINTF((\"%0  11d\", (int)-2147483648));\n\tPRINTF((\"%0  11d\", (int)-2147483648));\n\tPRINTF((\"%0     12d\", (int)-2147483648));\n\tPRINTF((\"%0 .d\", 0));\n\tPRINTF((\"%0 .0d\", 0));\n\tPRINTF((\"%0 .1d\", 0));\n\tPRINTF((\"%0 .2d\", 0));\n\tPRINTF((\"%0 .0d\", 1));\n\tPRINTF((\"%0 .1d\", 1));\n\tPRINTF((\"%0 .d\", -1));\n\tPRINTF((\"%0   .3d\", 1));\n\tPRINTF((\"%0  .1d\", -1));\n\tPRINTF((\"%0  .3d\", -1));\n\tPRINTF((\"%0 .10d\", 2147483647));\n\tPRINTF((\"%0 .11d\", 2147483647));\n\tPRINTF((\"%0 .12d\", 2147483647));\n\tPRINTF((\"%0 .9d\", (int)-2147483648));\n\tPRINTF((\"%0   .9d\", 2147483647));\n\tPRINTF((\"%0  .10d\", (int)-2147483648));\n\tPRINTF((\"%0 .8d\", 2178647));\n\tPRINTF((\"%0 .9d\", (int)-2144348));\n\tPRINTF((\"%0   .7d\", 2147837));\n\tPRINTF((\"%0  .8d\", (int)-2147486));\n\tPRINTF((\"%0  .7d\", (int)-2147486));\n\tPRINTF((\"%0 1.0d\", 0));\n\tPRINTF((\"%0 1.1d\", 0));\n\tPRINTF((\"%0 1.2d\", 0));\n\tPRINTF((\"%0  1.1d\", -1));\n\tPRINTF((\"%0  1.2d\", -1));\n\tPRINTF((\"%0 2.0d\", 1));\n\tPRINTF((\"%0 3.3d\", -1));\n\tPRINTF((\"%0 0  0 4.8d\", 0));\n\tPRINTF((\"%0  5.d\", 1));\n\tPRINTF((\"%0  2.9d\", -1));\n\tPRINTF((\"%0 9.8d\", 2147483647));\n\tPRINTF((\"%0 10.11d\", 2147483647));\n\tPRINTF((\"%0 11.9d\", 2147483647));\n\tPRINTF((\"%0 9.9d\", (int)-2147483648));\n\tPRINTF((\"%0   10.9d\", (int)-2147483648));\n\tPRINTF((\"%0  11.9di\", (int)-2147483648));\n\tPRINTF((\"%0  11.12ds\", (int)-2147483648));\n\tPRINTF((\"%0   12.0d\", (int)-2147483648));\n\tPRINTF((\"life %  0  12.0d is %0d craz% 20dy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%  00 00 9.12d is %  22d craz% 022dy\", -333, 2, -30));\n\tPRINTF((\"Thank %  0 d you vim for allowing % 0   .dme ed%  0 dit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions, ' ' and -\");\n\n\tPRINTF((\"%- d\", 0));\n\tPRINTF((\"%- d\", 1));\n\tPRINTF((\"%- d\", -1));\n\tPRINTF((\"%-    d\", 0));\n\tPRINTF((\"%-   d\", 1));\n\tPRINTF((\"%-  d\", -1));\n\tPRINTF((\"%- d\", 2147483647));\n\tPRINTF((\"%- d\", (int)-2147483648));\n\tPRINTF((\"%-   d\", 2147483647));\n\tPRINTF((\"%-  d\", (int)-2147483648));\n\tPRINTF((\"%- d\", 2178647));\n\tPRINTF((\"%- d\", (int)-2144348));\n\tPRINTF((\"%-   d\", 2147837));\n\tPRINTF((\"%-  d\", (int)-2147486));\n\tPRINTF((\"%- 1d\", 0));\n\tPRINTF((\"%-  1d\", -1));\n\tPRINTF((\"%- 2d\", 1));\n\tPRINTF((\"%- 3d\", -1));\n\tPRINTF((\"%-    4d\", 0));\n\tPRINTF((\"%-   5d\", 1));\n\tPRINTF((\"%-  2d\", -1));\n\tPRINTF((\"%- 9d\", 2147483647));\n\tPRINTF((\"%- 10d\", 2147483647));\n\tPRINTF((\"%- 11d\", 2147483647));\n\tPRINTF((\"%- 13d\", 2147483647));\n\tPRINTF((\"%- 16d\", 2147483647));\n\tPRINTF((\"%- 9d\", (int)-2147483648));\n\tPRINTF((\"%-   10d\", (int)-2147483648));\n\tPRINTF((\"%-  11d\", (int)-2147483648));\n\tPRINTF((\"%-  11d\", (int)-2147483648));\n\tPRINTF((\"%-     12d\", (int)-2147483648));\n\tPRINTF((\"%- .d\", 0));\n\tPRINTF((\"%- .0d\", 0));\n\tPRINTF((\"%- .1d\", 0));\n\tPRINTF((\"%- .2d\", 0));\n\tPRINTF((\"%- .0d\", 1));\n\tPRINTF((\"%- .1d\", 1));\n\tPRINTF((\"%- .d\", -1));\n\tPRINTF((\"%-   .3d\", 1));\n\tPRINTF((\"%-  .1d\", -1));\n\tPRINTF((\"%-  .3d\", -1));\n\tPRINTF((\"%- .10d\", 2147483647));\n\tPRINTF((\"%- .11d\", 2147483647));\n\tPRINTF((\"%- .12d\", 2147483647));\n\tPRINTF((\"%- .9d\", (int)-2147483648));\n\tPRINTF((\"%-   .9d\", 2147483647));\n\tPRINTF((\"%-  .10d\", (int)-2147483648));\n\tPRINTF((\"%- .8d\", 2178647));\n\tPRINTF((\"%- .9d\", (int)-2144348));\n\tPRINTF((\"%-   .7d\", 2147837));\n\tPRINTF((\"%-  .8d\", (int)-2147486));\n\tPRINTF((\"%-  .7d\", (int)-2147486));\n\tPRINTF((\"%- 1.0d\", 0));\n\tPRINTF((\"%- 1.1d\", 0));\n\tPRINTF((\"%- 1.2d\", 0));\n\tPRINTF((\"%-  1.1d\", -1));\n\tPRINTF((\"%-  1.2d\", -1));\n\tPRINTF((\"%- 2.0d\", 1));\n\tPRINTF((\"%- 3.3d\", -1));\n\tPRINTF((\"%-    4.8d\", 0));\n\tPRINTF((\"%-  5.d\", 1));\n\tPRINTF((\"%-  2.9d\", -1));\n\tPRINTF((\"%- 9.8d\", 2147483647));\n\tPRINTF((\"%- 10.11d\", 2147483647));\n\tPRINTF((\"%- 11.9d\", 2147483647));\n\tPRINTF((\"%- 9.9d\", (int)-2147483648));\n\tPRINTF((\"%-  - 10.9d\", (int)-2147483648));\n\tPRINTF((\"%-  11.9dx\", (int)-2147483648));\n\tPRINTF((\"%-  11.12ds\", (int)-2147483648));\n\tPRINTF((\"%-   12.0d\", (int)-2147483648));\n\tPRINTF((\"life %  -  12.0d is %-d craz% 20dy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%  00 00 9.12d is %  - 22d craz%-- -22dy\", -333, 2, -30));\n\tPRINTF((\"Thank %  - d you vim for allowing % 0   .dme ed%  - dit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and ' '\");\n\n\tPRINTF((\"% i\", 0));\n\tPRINTF((\"% i\", 1));\n\tPRINTF((\"% i\", -1));\n\tPRINTF((\"%    i\", 0));\n\tPRINTF((\"%   i\", 1));\n\tPRINTF((\"%  i\", -1));\n\tPRINTF((\"% i\", 2147483647));\n\tPRINTF((\"% i\", (int)-2147483648));\n\tPRINTF((\"%   i\", 2147483647));\n\tPRINTF((\"%  i\", (int)-2147483648));\n\tPRINTF((\"% i\", 2178647));\n\tPRINTF((\"% i\", (int)-2144348));\n\tPRINTF((\"%   i\", 2147837));\n\tPRINTF((\"%  i\", (int)-2147486));\n\tPRINTF((\"% 1i\", 0));\n\tPRINTF((\"%  1i\", -1));\n\tPRINTF((\"% 2i\", 1));\n\tPRINTF((\"% 3i\", -1));\n\tPRINTF((\"%    4i\", 0));\n\tPRINTF((\"%   5i\", 1));\n\tPRINTF((\"%  2i\", -1));\n\tPRINTF((\"% 9i\", 2147483647));\n\tPRINTF((\"% 10i\", 2147483647));\n\tPRINTF((\"% 11i\", 2147483647));\n\tPRINTF((\"% 9i\", (int)-2147483648));\n\tPRINTF((\"%   10i\", (int)-2147483648));\n\tPRINTF((\"%  11i\", (int)-2147483648));\n\tPRINTF((\"%  11i\", (int)-2147483648));\n\tPRINTF((\"%     12i\", (int)-2147483648));\n\tPRINTF((\"% .i\", 0));\n\tPRINTF((\"% .0i\", 0));\n\tPRINTF((\"% .1i\", 0));\n\tPRINTF((\"% .2i\", 0));\n\tPRINTF((\"% .0i\", 1));\n\tPRINTF((\"% .1i\", 1));\n\tPRINTF((\"% .i\", -1));\n\tPRINTF((\"%   .3i\", 1));\n\tPRINTF((\"%  .1i\", -1));\n\tPRINTF((\"%  .3i\", -1));\n\tPRINTF((\"% .10i\", 2147483647));\n\tPRINTF((\"% .11i\", 2147483647));\n\tPRINTF((\"% .9i\", (int)-2147483648));\n\tPRINTF((\"%   .9i\", 2147483647));\n\tPRINTF((\"%  .10i\", (int)-2147483648));\n\tPRINTF((\"% .8i\", 2178647));\n\tPRINTF((\"% .9i\", (int)-2144348));\n\tPRINTF((\"%   .7i\", 2147837));\n\tPRINTF((\"%  .8i\", (int)-2147486));\n\tPRINTF((\"%  .7i\", (int)-2147486));\n\tPRINTF((\"% 1.0i\", 0));\n\tPRINTF((\"% 1.1i\", 0));\n\tPRINTF((\"% 1.2i\", 0));\n\tPRINTF((\"%  1.1i\", -1));\n\tPRINTF((\"%  1.2i\", -1));\n\tPRINTF((\"% 2.0i\", 1));\n\tPRINTF((\"% 3.3i\", -1));\n\tPRINTF((\"%    4.8i\", 0));\n\tPRINTF((\"%  5.i\", 1));\n\tPRINTF((\"%  2.9i\", -1));\n\tPRINTF((\"% 9.8i\", 2147483647));\n\tPRINTF((\"% 10.11i\", 2147483647));\n\tPRINTF((\"% 11.9i\", 2147483647));\n\tPRINTF((\"% 9.9i\", (int)-2147483648));\n\tPRINTF((\"%   10.9i\", (int)-2147483648));\n\tPRINTF((\"%  11.9ii\", (int)-2147483648));\n\tPRINTF((\"%  11.12is\", (int)-2147483648));\n\tPRINTF((\"%   12.0i\", (int)-2147483648));\n\tPRINTF((\"life %   12.0i is %i craz% iy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%   9.12i is % 22i craz%22iy\", -333, 2, -30));\n\tPRINTF((\"Thank %  i you vim for allowing % .ime ed%   iit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%i, widths, precisions, ' ' and 0\");\n\n\tPRINTF((\"%0 i\", 0));\n\tPRINTF((\"%0 i\", 1));\n\tPRINTF((\"%0 i\", -1));\n\tPRINTF((\"%0    i\", 0));\n\tPRINTF((\"%0   i\", 1));\n\tPRINTF((\"%0  i\", -1));\n\tPRINTF((\"%0 i\", 2147483647));\n\tPRINTF((\"%0 i\", (int)-2147483648));\n\tPRINTF((\"%0   i\", 2147483647));\n\tPRINTF((\"%0  i\", (int)-2147483648));\n\tPRINTF((\"%0 i\", 2178647));\n\tPRINTF((\"%0 i\", (int)-2144348));\n\tPRINTF((\"%0   i\", 2147837));\n\tPRINTF((\"%0  i\", (int)-2147486));\n\tPRINTF((\"%0 1i\", 0));\n\tPRINTF((\"%0  1i\", -1));\n\tPRINTF((\"%0 2i\", 1));\n\tPRINTF((\"%0 3i\", -1));\n\tPRINTF((\"%0    4i\", 0));\n\tPRINTF((\"%0   5i\", 1));\n\tPRINTF((\"%0  2i\", -1));\n\tPRINTF((\"%0 9i\", 2147483647));\n\tPRINTF((\"%0 10i\", 2147483647));\n\tPRINTF((\"%0 11i\", 2147483647));\n\tPRINTF((\"%0 13i\", 2147483647));\n\tPRINTF((\"%0 16i\", 2147483647));\n\tPRINTF((\"%0 9i\", (int)-2147483648));\n\tPRINTF((\"%0   10i\", (int)-2147483648));\n\tPRINTF((\"%0  11i\", (int)-2147483648));\n\tPRINTF((\"%0  11i\", (int)-2147483648));\n\tPRINTF((\"%0     12i\", (int)-2147483648));\n\tPRINTF((\"%0 .i\", 0));\n\tPRINTF((\"%0 .0i\", 0));\n\tPRINTF((\"%0 .1i\", 0));\n\tPRINTF((\"%0 .2i\", 0));\n\tPRINTF((\"%0 .0i\", 1));\n\tPRINTF((\"%0 .1i\", 1));\n\tPRINTF((\"%0 .i\", -1));\n\tPRINTF((\"%0   .3i\", 1));\n\tPRINTF((\"%0  .1i\", -1));\n\tPRINTF((\"%0  .3i\", -1));\n\tPRINTF((\"%0 .10i\", 2147483647));\n\tPRINTF((\"%0 .11i\", 2147483647));\n\tPRINTF((\"%0 .12i\", 2147483647));\n\tPRINTF((\"%0 .9i\", (int)-2147483648));\n\tPRINTF((\"%0   .9i\", 2147483647));\n\tPRINTF((\"%0  .10i\", (int)-2147483648));\n\tPRINTF((\"%0 .8i\", 2178647));\n\tPRINTF((\"%0 .9i\", (int)-2144348));\n\tPRINTF((\"%0   .7i\", 2147837));\n\tPRINTF((\"%0  .8i\", (int)-2147486));\n\tPRINTF((\"%0  .7i\", (int)-2147486));\n\tPRINTF((\"%0 1.0i\", 0));\n\tPRINTF((\"%0 1.1i\", 0));\n\tPRINTF((\"%0 1.2i\", 0));\n\tPRINTF((\"%0  1.1i\", -1));\n\tPRINTF((\"%0  1.2i\", -1));\n\tPRINTF((\"%0 2.0i\", 1));\n\tPRINTF((\"%0 3.3i\", -1));\n\tPRINTF((\"%0 0  0 4.8i\", 0));\n\tPRINTF((\"%0  5.i\", 1));\n\tPRINTF((\"%0  2.9i\", -1));\n\tPRINTF((\"%0 9.8i\", 2147483647));\n\tPRINTF((\"%0 10.11i\", 2147483647));\n\tPRINTF((\"%0 11.9i\", 2147483647));\n\tPRINTF((\"%0 9.9i\", (int)-2147483648));\n\tPRINTF((\"%0   10.9i\", (int)-2147483648));\n\tPRINTF((\"%0  11.9ii\", (int)-2147483648));\n\tPRINTF((\"%0  11.12is\", (int)-2147483648));\n\tPRINTF((\"%0   12.0i\", (int)-2147483648));\n\tPRINTF((\"life %  0  12.0i is %0i craz% 20iy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%  00 00 9.12i is %  22i craz% 022iy\", -333, 2, -30));\n\tPRINTF((\"Thank %  0 i you vim for allowing % 0   .ime ei%  0 iit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_I && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%i, widths, precisions, ' ' and -\");\n\n\tPRINTF((\"%- i\", 0));\n\tPRINTF((\"%- i\", 1));\n\tPRINTF((\"%- i\", -1));\n\tPRINTF((\"%-    i\", 0));\n\tPRINTF((\"%-   i\", 1));\n\tPRINTF((\"%-  i\", -1));\n\tPRINTF((\"%- i\", 2147483647));\n\tPRINTF((\"%- i\", (int)-2147483648));\n\tPRINTF((\"%-   i\", 2147483647));\n\tPRINTF((\"%-  i\", (int)-2147483648));\n\tPRINTF((\"%- i\", 2178647));\n\tPRINTF((\"%- i\", (int)-2144348));\n\tPRINTF((\"%-   i\", 2147837));\n\tPRINTF((\"%-  i\", (int)-2147486));\n\tPRINTF((\"%- 1i\", 0));\n\tPRINTF((\"%-  1i\", -1));\n\tPRINTF((\"%- 2i\", 1));\n\tPRINTF((\"%- 3i\", -1));\n\tPRINTF((\"%-    4i\", 0));\n\tPRINTF((\"%-   5i\", 1));\n\tPRINTF((\"%-  2i\", -1));\n\tPRINTF((\"%- 9i\", 2147483647));\n\tPRINTF((\"%- 10i\", 2147483647));\n\tPRINTF((\"%- 11i\", 2147483647));\n\tPRINTF((\"%- 13i\", 2147483647));\n\tPRINTF((\"%- 16i\", 2147483647));\n\tPRINTF((\"%- 9i\", (int)-2147483648));\n\tPRINTF((\"%-   10i\", (int)-2147483648));\n\tPRINTF((\"%-  11i\", (int)-2147483648));\n\tPRINTF((\"%-  11i\", (int)-2147483648));\n\tPRINTF((\"%-     12i\", (int)-2147483648));\n\tPRINTF((\"%- .i\", 0));\n\tPRINTF((\"%- .0i\", 0));\n\tPRINTF((\"%- .1i\", 0));\n\tPRINTF((\"%- .2i\", 0));\n\tPRINTF((\"%- .0i\", 1));\n\tPRINTF((\"%- .1i\", 1));\n\tPRINTF((\"%- .i\", -1));\n\tPRINTF((\"%-   .3i\", 1));\n\tPRINTF((\"%-  .1i\", -1));\n\tPRINTF((\"%-  .3i\", -1));\n\tPRINTF((\"%- .10i\", 2147483647));\n\tPRINTF((\"%- .11i\", 2147483647));\n\tPRINTF((\"%- .12i\", 2147483647));\n\tPRINTF((\"%- .9i\", (int)-2147483648));\n\tPRINTF((\"%-   .9i\", 2147483647));\n\tPRINTF((\"%-  .10i\", (int)-2147483648));\n\tPRINTF((\"%- .8i\", 2178647));\n\tPRINTF((\"%- .9i\", (int)-2144348));\n\tPRINTF((\"%-   .7i\", 2147837));\n\tPRINTF((\"%-  .8i\", (int)-2147486));\n\tPRINTF((\"%-  .7i\", (int)-2147486));\n\tPRINTF((\"%- 1.0i\", 0));\n\tPRINTF((\"%- 1.1i\", 0));\n\tPRINTF((\"%- 1.2i\", 0));\n\tPRINTF((\"%-  1.1i\", -1));\n\tPRINTF((\"%-  1.2i\", -1));\n\tPRINTF((\"%- 2.0i\", 1));\n\tPRINTF((\"%- 3.3i\", -1));\n\tPRINTF((\"%-    4.8i\", 0));\n\tPRINTF((\"%-  5.i\", 1));\n\tPRINTF((\"%-  2.9i\", -1));\n\tPRINTF((\"%- 9.8i\", 2147483647));\n\tPRINTF((\"%- 10.11i\", 2147483647));\n\tPRINTF((\"%- 11.9i\", 2147483647));\n\tPRINTF((\"%- 9.9i\", (int)-2147483648));\n\tPRINTF((\"%-  - 10.9i\", (int)-2147483648));\n\tPRINTF((\"%-  11.9ii\", (int)-2147483648));\n\tPRINTF((\"%-  11.12is\", (int)-2147483648));\n\tPRINTF((\"%-   12.0i\", (int)-2147483648));\n\tPRINTF((\"life %  -  12.0i is %-i craz% 20iy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%  00 00 9.12i is %  - 22i craz%-- -22iy\", -333, 2, -30));\n\tPRINTF((\"Thank %  - i you vim for allowing % 0   .ime ed%  - ixt this file\", -333, 0, -30));\n\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions and ' '\");\n\n\tPRINTF((\"%+d\", 0));\n\tPRINTF((\"%+d\", 1));\n\tPRINTF((\"%+d\", -1));\n\tPRINTF((\"%++++d\", 0));\n\tPRINTF((\"%+++d\", 1));\n\tPRINTF((\"%++d\", -1));\n\tPRINTF((\"%+d\", 2147483647));\n\tPRINTF((\"%+d\", (int)-2147483648));\n\tPRINTF((\"%+++d\", 2147483647));\n\tPRINTF((\"%++d\", (int)-2147483648));\n\tPRINTF((\"%+d\", 2178647));\n\tPRINTF((\"%+d\", (int)-2144348));\n\tPRINTF((\"%+++d\", 2147837));\n\tPRINTF((\"%++d\", (int)-2147486));\n\tPRINTF((\"%+1d\", 0));\n\tPRINTF((\"%++1d\", -1));\n\tPRINTF((\"%+2d\", 1));\n\tPRINTF((\"%+3d\", -1));\n\tPRINTF((\"%++++4d\", 0));\n\tPRINTF((\"%+++5d\", 1));\n\tPRINTF((\"%++2d\", -1));\n\tPRINTF((\"%+9d\", 2147483647));\n\tPRINTF((\"%+10d\", 2147483647));\n\tPRINTF((\"%+11d\", 2147483647));\n\tPRINTF((\"%+9d\", (int)-2147483648));\n\tPRINTF((\"%+++10d\", (int)-2147483648));\n\tPRINTF((\"%++11d\", (int)-2147483648));\n\tPRINTF((\"%++11d\", (int)-2147483648));\n\tPRINTF((\"%+++++12d\", (int)-2147483648));\n\tPRINTF((\"%+.d\", 0));\n\tPRINTF((\"%+.0d\", 0));\n\tPRINTF((\"%+.1d\", 0));\n\tPRINTF((\"%+.2d\", 0));\n\tPRINTF((\"%+.0d\", 1));\n\tPRINTF((\"%+.1d\", 1));\n\tPRINTF((\"%+.d\", -1));\n\tPRINTF((\"%+++.3d\", 1));\n\tPRINTF((\"%++.1d\", -1));\n\tPRINTF((\"%++.3d\", -1));\n\tPRINTF((\"%+.10d\", 2147483647));\n\tPRINTF((\"%+.11d\", 2147483647));\n\tPRINTF((\"%+.9d\", (int)-2147483648));\n\tPRINTF((\"%+++.9d\", 2147483647));\n\tPRINTF((\"%++.10d\", (int)-2147483648));\n\tPRINTF((\"%+.8d\", 2178647));\n\tPRINTF((\"%+.9d\", (int)-2144348));\n\tPRINTF((\"%+++.7d\", 2147837));\n\tPRINTF((\"%++.8d\", (int)-2147486));\n\tPRINTF((\"%++.7d\", (int)-2147486));\n\tPRINTF((\"%+1.0d\", 0));\n\tPRINTF((\"%+1.1d\", 0));\n\tPRINTF((\"%+1.2d\", 0));\n\tPRINTF((\"%++1.1d\", -1));\n\tPRINTF((\"%++1.2d\", -1));\n\tPRINTF((\"%+2.0d\", 1));\n\tPRINTF((\"%+3.3d\", -1));\n\tPRINTF((\"%++++4.8d\", 0));\n\tPRINTF((\"%++5.d\", 1));\n\tPRINTF((\"%++2.9d\", -1));\n\tPRINTF((\"%+9.8d\", 2147483647));\n\tPRINTF((\"%+10.11d\", 2147483647));\n\tPRINTF((\"%+11.9d\", 2147483647));\n\tPRINTF((\"%+9.9d\", (int)-2147483648));\n\tPRINTF((\"%+++10.9d\", (int)-2147483648));\n\tPRINTF((\"%++11.9di\", (int)-2147483648));\n\tPRINTF((\"%++11.12ds\", (int)-2147483648));\n\tPRINTF((\"%+++12.0d\", (int)-2147483648));\n\tPRINTF((\"life %+++12.0d is %d craz%+dy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%+++9.12d is % 22d craz%22dy\", -333, 2, -30));\n\tPRINTF((\"Thank %++d you vim for allowing %+.dme ed%+++++dit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions, ' ' and 0\");\n\n\tPRINTF((\"%0+d\", 0));\n\tPRINTF((\"%0+d\", 1));\n\tPRINTF((\"%0+d\", -1));\n\tPRINTF((\"%0++++d\", 0));\n\tPRINTF((\"%0+++d\", 1));\n\tPRINTF((\"%0++d\", -1));\n\tPRINTF((\"%0+d\", 2147483647));\n\tPRINTF((\"%0+d\", (int)-2147483648));\n\tPRINTF((\"%0+++d\", 2147483647));\n\tPRINTF((\"%0++d\", (int)-2147483648));\n\tPRINTF((\"%0+d\", 2178647));\n\tPRINTF((\"%0+d\", (int)-2144348));\n\tPRINTF((\"%0+++d\", 2147837));\n\tPRINTF((\"%0++d\", (int)-2147486));\n\tPRINTF((\"%0+1d\", 0));\n\tPRINTF((\"%0++1d\", -1));\n\tPRINTF((\"%0+2d\", 1));\n\tPRINTF((\"%0+3d\", -1));\n\tPRINTF((\"%0++++4d\", 0));\n\tPRINTF((\"%0+++5d\", 1));\n\tPRINTF((\"%0++2d\", -1));\n\tPRINTF((\"%0+9d\", 2147483647));\n\tPRINTF((\"%0+10d\", 2147483647));\n\tPRINTF((\"%0+11d\", 2147483647));\n\tPRINTF((\"%0+13d\", 2147483647));\n\tPRINTF((\"%0+16d\", 2147483647));\n\tPRINTF((\"%0+9d\", (int)-2147483648));\n\tPRINTF((\"%0+++10d\", (int)-2147483648));\n\tPRINTF((\"%0++11d\", (int)-2147483648));\n\tPRINTF((\"%0++11d\", (int)-2147483648));\n\tPRINTF((\"%0+++++12d\", (int)-2147483648));\n\tPRINTF((\"%0+.d\", 0));\n\tPRINTF((\"%0+.0d\", 0));\n\tPRINTF((\"%0+.1d\", 0));\n\tPRINTF((\"%0+.2d\", 0));\n\tPRINTF((\"%0+.0d\", 1));\n\tPRINTF((\"%0+.1d\", 1));\n\tPRINTF((\"%0+.d\", -1));\n\tPRINTF((\"%0+++.3d\", 1));\n\tPRINTF((\"%0++.1d\", -1));\n\tPRINTF((\"%0++.3d\", -1));\n\tPRINTF((\"%0+.10d\", 2147483647));\n\tPRINTF((\"%0+.11d\", 2147483647));\n\tPRINTF((\"%0+.12d\", 2147483647));\n\tPRINTF((\"%0+.9d\", (int)-2147483648));\n\tPRINTF((\"%0+++.9d\", 2147483647));\n\tPRINTF((\"%0++.10d\", (int)-2147483648));\n\tPRINTF((\"%0+.8d\", 2178647));\n\tPRINTF((\"%0+.9d\", (int)-2144348));\n\tPRINTF((\"%0+++.7d\", 2147837));\n\tPRINTF((\"%0++.8d\", (int)-2147486));\n\tPRINTF((\"%0++.7d\", (int)-2147486));\n\tPRINTF((\"%0+1.0d\", 0));\n\tPRINTF((\"%0+1.1d\", 0));\n\tPRINTF((\"%0+1.2d\", 0));\n\tPRINTF((\"%0++1.1d\", -1));\n\tPRINTF((\"%0++1.2d\", -1));\n\tPRINTF((\"%0+2.0d\", 1));\n\tPRINTF((\"%0+3.3d\", -1));\n\tPRINTF((\"%0+0++0+4.8d\", 0));\n\tPRINTF((\"%0++5.d\", 1));\n\tPRINTF((\"%0++2.9d\", -1));\n\tPRINTF((\"%0+9.8d\", 2147483647));\n\tPRINTF((\"%0+10.11d\", 2147483647));\n\tPRINTF((\"%0+11.9d\", 2147483647));\n\tPRINTF((\"%0+9.9d\", (int)-2147483648));\n\tPRINTF((\"%0+++10.9d\", (int)-2147483648));\n\tPRINTF((\"%0++11.9di\", (int)-2147483648));\n\tPRINTF((\"%0++11.12ds\", (int)-2147483648));\n\tPRINTF((\"%0+++12.0d\", (int)-2147483648));\n\tPRINTF((\"life %++0++12.0d is %0d craz%+20dy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%++00+00+9.12d is %++22d craz%+022dy\", -333, 2, -30));\n\tPRINTF((\"Thank %++0+d you vim for allowing %+0+++.dme ed%++0+dit this file\", -333, 0, -30));\n\n\tright_cat = (g_all_bonus & CAT_BONUS_2) ? 1\n\t\t\t: test_cat ? (test_cat & CAT_D && test_cat & CAT_BONUS_2)\n\t\t\t: 1;\n\tdescribe(\"\\n%d, widths, precisions, ' ' and -\");\n\n\tPRINTF((\"%-+d\", 0));\n\tPRINTF((\"%-+d\", 1));\n\tPRINTF((\"%-+d\", -1));\n\tPRINTF((\"%-++++d\", 0));\n\tPRINTF((\"%-+++d\", 1));\n\tPRINTF((\"%-++d\", -1));\n\tPRINTF((\"%-+d\", 2147483647));\n\tPRINTF((\"%-+d\", (int)-2147483648));\n\tPRINTF((\"%-+++d\", 2147483647));\n\tPRINTF((\"%-++d\", (int)-2147483648));\n\tPRINTF((\"%-+d\", 2178647));\n\tPRINTF((\"%-+d\", (int)-2144348));\n\tPRINTF((\"%-+++d\", 2147837));\n\tPRINTF((\"%-++d\", (int)-2147486));\n\tPRINTF((\"%-+1d\", 0));\n\tPRINTF((\"%-++1d\", -1));\n\tPRINTF((\"%-+2d\", 1));\n\tPRINTF((\"%-+3d\", -1));\n\tPRINTF((\"%-++++4d\", 0));\n\tPRINTF((\"%-+++5d\", 1));\n\tPRINTF((\"%-++2d\", -1));\n\tPRINTF((\"%-+9d\", 2147483647));\n\tPRINTF((\"%-+10d\", 2147483647));\n\tPRINTF((\"%-+11d\", 2147483647));\n\tPRINTF((\"%-+13d\", 2147483647));\n\tPRINTF((\"%-+16d\", 2147483647));\n\tPRINTF((\"%-+9d\", (int)-2147483648));\n\tPRINTF((\"%-+++10d\", (int)-2147483648));\n\tPRINTF((\"%-++11d\", (int)-2147483648));\n\tPRINTF((\"%-++11d\", (int)-2147483648));\n\tPRINTF((\"%-+++++12d\", (int)-2147483648));\n\tPRINTF((\"%-+.d\", 0));\n\tPRINTF((\"%-+.0d\", 0));\n\tPRINTF((\"%-+.1d\", 0));\n\tPRINTF((\"%-+.2d\", 0));\n\tPRINTF((\"%-+.0d\", 1));\n\tPRINTF((\"%-+.1d\", 1));\n\tPRINTF((\"%-+.d\", -1));\n\tPRINTF((\"%-+++.3d\", 1));\n\tPRINTF((\"%-++.1d\", -1));\n\tPRINTF((\"%-++.3d\", -1));\n\tPRINTF((\"%-+.10d\", 2147483647));\n\tPRINTF((\"%-+.11d\", 2147483647));\n\tPRINTF((\"%-+.12d\", 2147483647));\n\tPRINTF((\"%-+.9d\", (int)-2147483648));\n\tPRINTF((\"%-+++.9d\", 2147483647));\n\tPRINTF((\"%-++.10d\", (int)-2147483648));\n\tPRINTF((\"%-+.8d\", 2178647));\n\tPRINTF((\"%-+.9d\", (int)-2144348));\n\tPRINTF((\"%-+++.7d\", 2147837));\n\tPRINTF((\"%-++.8d\", (int)-2147486));\n\tPRINTF((\"%-++.7d\", (int)-2147486));\n\tPRINTF((\"%-+1.0d\", 0));\n\tPRINTF((\"%-+1.1d\", 0));\n\tPRINTF((\"%-+1.2d\", 0));\n\tPRINTF((\"%-++1.1d\", -1));\n\tPRINTF((\"%-++1.2d\", -1));\n\tPRINTF((\"%-+2.0d\", 1));\n\tPRINTF((\"%-+3.3d\", -1));\n\tPRINTF((\"%-++++4.8d\", 0));\n\tPRINTF((\"%-++5.d\", 1));\n\tPRINTF((\"%-++2.9d\", -1));\n\tPRINTF((\"%-+9.8d\", 2147483647));\n\tPRINTF((\"%-+10.11d\", 2147483647));\n\tPRINTF((\"%-+11.9d\", 2147483647));\n\tPRINTF((\"%-+9.9d\", (int)-2147483648));\n\tPRINTF((\"%-++-+10.9d\", (int)-2147483648));\n\tPRINTF((\"%-++11.9dx\", (int)-2147483648));\n\tPRINTF((\"%-++11.12ds\", (int)-2147483648));\n\tPRINTF((\"%-+++12.0d\", (int)-2147483648));\n\tPRINTF((\"life %++-++12.0d is %-d craz%+20dy\", 1, 2, (int)-2147483648));\n\tPRINTF((\"%++00+00+9.12d is %++-+22d craz%--+-22dy\", -333, 2, -30));\n\tPRINTF((\"Thank %++-+d you vim for allowing %+0+++.dme ed%++-+dit this file\", -333, 0, -30));\n\n\treturn (0);\n}\n"
  },
  {
    "path": "src/user_printer.c",
    "content": ""
  },
  {
    "path": "src/utils.c",
    "content": "#include \"get_next_line.h\"\n#include \"libftprintf.h\"\n#include \"../libtest/libtest.h\"\n#include \"ft_printf_tester.h\"\n#include \"helpers.h\"\n#include <signal.h>\n#include <stdlib.h>\n#include <execinfo.h>\n\nextern int g_current_test;\nextern int g_test_nbr;\nextern int passed_tests;\n\nvoid pretty_printf(char *params)\n{\n\tint i = 0;\n\tint inside_string = 0;\n\n\ttester_putstr(BLUE \"ft_printf\" RESET);\n\twhile (params[i])\n\t{\n\t\tif (params[i] == '\"' || params[i] == '\\'')\n\t\t{\n\t\t\tif (inside_string)\n\t\t\t\ttester_putchar(params[i]), tester_putstr(RESET), inside_string = 0;\n\t\t\telse\n\t\t\t\ttester_putstr(GREEN), tester_putchar(params[i]), inside_string = 1;\n\t\t}\n\t\telse if (isdigit(params[i]) && !inside_string)\n\t\t{\n\t\t\tif (!isdigit(params[i - 1]))\n\t\t\t\ttester_putstr(YELLOW);\n\t\t\ttester_putchar(params[i]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (i > 0 && isdigit(params[i - 1]) && !inside_string)\n\t\t\t\ttester_putstr(RESET);\n\t\t\ttester_putchar(params[i]);\n\n\t\t}\n\t\ti++;\n\t}\n\ttester_putstr(\";\\n\");\n}\n\nint already_printed_help = 0;\nvoid print_help(char *params_used)\n{\n\tif (already_printed_help)\n\t\treturn ;\n\talready_printed_help = 1;\n\ttester_putstr(\"\\n     \");\n\ttester_putstr(RESET BOLD \"You can rerun this test with \" RESET YELLOW \"sh test \");\n\ttester_putnbr(g_current_test);\n\ttester_putstr(RESET \"\\n     \");\n\ttester_putstr(\"The function was called like this:\\n   \");\n\tpretty_printf(params_used);\n}\n\nvoid\tprint_output(t_result *expected, t_result *user, unsigned int expected_size, unsigned int result_size)\n//void\tprint_string_diff(char expected[], char result[], unsigned int expected_size, unsigned int result_size)\n{\n\tint is_red_already = 0;\n\n\ttester_putstr(RESET \"        Expected: [\");\n\tfor (unsigned int i = 0; i < expected_size; i++)\n\t{\n\t\tif (expected->output_str[i] == '\\0')\n\t\t\ttester_putstr(MAGENTA \"\\\\0\" RESET);\n\t\telse if (expected->output_str[i] == '\\n')\n\t\t\ttester_putstr(MAGENTA \"\\\\n\" RESET);\n\t\telse if (!isprint(expected->output_str[i]))\n\t\t\tprint_non_print(expected->output_str[i]);\n\t\telse\n\t\t\ttester_putchar(expected->output_str[i]);\n\t}\n\ttester_putstr(\"], return: \");\n\ttester_putnbr(expected->return_value);\n\n\ttester_putstr(\"\\n        Got:      [\");\n\tunsigned int i = 0;\n\tint expected_ended = 0;\n\twhile (i < result_size)\n\t{\n\t\tif (expected_ended || ((expected->output_str[i] != user->output_str[i]) && !is_red_already))\n\t\t{\n\t\t\tis_red_already = 1;\n\t\t\ttester_putstr(BOLD RED);\n\t\t}\n\t\telse if (expected->output_str[i] == user->output_str[i] && is_red_already)\n\t\t{\n\t\t\ttester_putstr(RESET);\n\t\t\tis_red_already = 0;\n\t\t}\n\t\tif (user->output_str[i] == '\\0')\n\t\t\ttester_putstr(BOLD MAGENTA \"\\\\0\" RESET);\n\t\telse if (user->output_str[i] > 1 && user->output_str[i] < 32)\n\t\t\tprint_non_print(user->output_str[i]);\n\t\telse\n\t\t\ttester_putchar(user->output_str[i]);\n\t\tif (!expected_ended && expected->output_str[i] == '\\0')\n\t\t\texpected_ended = 1;\n\t\ti++;\n\t}\n\ttester_putstr(RESET \"], return: \");\n\ttester_putnbr(user->return_value);\n}\n\nint check_leaks_sanitizer(int user_stderr)\n{\n\tint n = 0;\n\tint error = 0;\n\tchar *line;\n\tint result = get_next_line(user_stderr, &line); // get rid of the first line\n\tfree(line);\n\tif (result <= 0)\n\t\treturn (0);\n\tresult = get_next_line(user_stderr, &line);\n\tn = strlen(line);\n\tif (tester_strnstr(line, \"heap-buffer-overflow\", n))\n\t{\n\t\terror = ERRORS_BUFFER_OVERFLOW;\n\t}\n\tfree(line);\n\tresult = get_next_line(user_stderr, &line); // get rid of the first line\n\tn = strlen(line);\n\tif (tester_strnstr(line, \"leaks\", n))\n\t\terror = ERRORS_LEAK;\n\telse if (tester_strnstr(line, \"SEGV\", n))\n\t\terror = ERRORS_SIGSEGV;\n\tfree(line);\n\t// get rid of the rest of the file\n\tchar dummy_buffer[100];\n\twhile (read(user_stderr, dummy_buffer, 100));\n\tget_next_line(user_stderr, &line);\n\tfree(line);\n\treturn (error);\n}\n\nint check_leaks_malloc_count(int user_stderr)\n{\n\tint result;\n\tint leaked = 0;\n\tchar *line;\n\n\twhile (1)\n\t{\n\t\tresult = get_next_line(user_stderr, &line);\n\t\tif (result <= 0)\n\t\t{\n\t\t\tfree(line); break ;\n\t\t}\n\t\tif (!tester_strnstr(line, \"current: 0\", tester_strlen(line)))\n\t\t{\n\t\t\tleaked = 1;\n\t\t}\n\t\tfree(line);\n\t}\n\treturn (leaked);\n}\n\nint check_errors(char *params_used)\n{\n\tint error = 0;\n\t(void) params_used;\n\n\tint user_stderr = open(\"files/user_stderr.txt\", O_RDONLY);\n\n\tif (LEAK_CHECKER == LEAK_SANITIZER)\n\t\terror = check_leaks_sanitizer(user_stderr);\n\telse if (LEAK_CHECKER == MALLOC_COUNT)\n\t\terror = check_leaks_malloc_count(user_stderr);\n\tclose(user_stderr);\n\treturn (error);\n}\n\nint g_tests_failed = 0;\n\n# define MAX(x, y) ((x > y) ? x : y)\n\nint check_result(t_result *user_result, t_result *orig_result, char *params_used)\n{\n\tif (g_current_test == g_test_nbr || g_test_nbr == 0)\n\t{\n\t\tchar *result;\n\t\tchar *expected;\n\t\tint success = 1;\n\t\tint errors = 0;\n\t\tint wrong_return = 0;\n\n\t\terrors = check_errors(params_used);\n\t\texpected = orig_result->output_str;\n\t\tresult = user_result->output_str;\n\t\tif (!errors || errors == ERRORS_LEAK)\n\t\t{\n\t\t\tsuccess = test_string(expected, result, MAX(orig_result->bytes_read, user_result->bytes_read));\n\t\t\twrong_return = user_result->return_value != orig_result->return_value;\n\t\t}\n\n\t\tif (success && !wrong_return && !errors)\n\t\t\ttester_putstr(GREEN);\n\t\telse\n\t\t\ttester_putstr(BOLD RED \"\\n  \"), g_tests_failed++;\n\t\ttester_putnbr(g_current_test);\n\t\ttester_putchar('.');\n\n\t\tif (success && !wrong_return && !errors)\n\t\t\ttester_putstr(BOLD \"OK\" RESET);\n\t\telse if (errors && errors != ERRORS_LEAK) {\n\t\t\tif (errors == ERRORS_SIGSEGV || errors == ERRORS_BUFFER_OVERFLOW)\n\t\t\t\ttester_putstr(BOLD \"SIGSEGV!\");\n\t\t\telse\n\t\t\t\ttester_putstr(BOLD \"UNKNOWN CRASH!\");\n\t\t}\n\t\telse\n\t\t\ttester_putstr(\"KO\");\n\n\t\tif (!success)\n\t\t\ttester_putstr(\" (Wrong output)\");\n\t\tif (wrong_return)\n\t\t\ttester_putstr(\" (Wrong return)\");\n\t\tif (errors == ERRORS_LEAK)\n\t\t\ttester_putstr(RED \" (LEAKS!)\");\n\t\tif (!success || wrong_return) {\n\t\t\ttester_putstr(\"\\n\");\n\t\t\tprint_output(orig_result, user_result, orig_result->bytes_read, user_result->bytes_read);\n\t\t}\n\t\telse\n\t\t\ttester_putchar(' ');\n\t\tif (!success || errors || wrong_return)\n\t\t\tprint_help(params_used);\n\t\telse\n\t\t\tpassed_tests++;\n\t}\n\treturn (0);\n}\n\nextern int right_cat;\n\nvoid describe(char *test_title)\n{\n\tif (!right_cat || g_test_nbr != 0)\n\t\treturn ;\n\ttester_putstr(BOLD);\n\ttester_putstr(test_title);\n\ttester_putstr(\": \"RESET \"\\n  \");\n}\n\nvoid open_pipes(int *p1, int *p2)\n{\n\tif (pipe(p1) < 0)\n\t{\n\t\ttester_putstr(\"error opening stdout_pipe\\n\");\n\t\texit(26);\n\t}\n\tif (pipe(p2) < 0)\n\t{\n\t\ttester_putstr(\"error opening rtrn_pipe\\n\");\n\t\texit(24);\n\t}\n}\n\nextern int g_function_return;\n\nvoid prepare_test(char *err_file, int *outpipe, int *retpipe) {\n\t/* the child don't need to read anything */\n\tclose(outpipe[READ]);\n\tclose(retpipe[READ]); \n\t/* int file = open(\"files/original_output.txt\", O_CREAT | O_WRONLY | O_TRUNC, 0644); */\n\tint err = open(err_file, O_CREAT | O_WRONLY | O_TRUNC, 0644); /* get rid of real printf errors*/\n\tdup2(outpipe[WRITE], 1);\n\tdup2(err, 2);\n\tg_function_return = -10;\n}\n\nvoid finish_test(int result, int *outpipe, int *retpipe)\n{\n\twrite(retpipe[WRITE], &result, sizeof(int));\n\tclose(outpipe[WRITE]);\n\tclose(retpipe[WRITE]); \n\texit (0);\n\n}\n\nvoid fetch_result(t_result *result, char *output_buffer, int *stdout_pipe, int *rtrn_pipe)\n{\n\tclose(stdout_pipe[WRITE]);\n\tclose(rtrn_pipe[WRITE]);\n\tint bytes_read = read(stdout_pipe[READ], output_buffer, BUFSIZE);\n\tg_function_return = -10;\n\tread(rtrn_pipe[READ], &g_function_return, sizeof(int));\n\tclose(stdout_pipe[READ]);\n\tclose(rtrn_pipe[READ]);\n\tresult->return_value = g_function_return;\n\tresult->output_str = output_buffer;\n\tresult->bytes_read = bytes_read;\n}\n\nextern char *g_test_params;\nextern char *g_user_fake_stdout;\n\nvoid handle_errors(int wstatus, t_result *user_r, t_result *orig_r,\n\t\tchar *user_output, int *output_pipe, int *return_pipe) {\n\t/* 30 is the status code for the leak sanitizer   */\n\tint child_exit_status = WEXITSTATUS(wstatus);\n\tif (child_exit_status && child_exit_status != 30) {\n\t\ttester_putstr(BOLD RED);\n\t\ttester_putnbr(g_current_test);\n\t\tswitch(child_exit_status) {\n\t\t\tcase SIGSEGV: /* classic segfault */\n\t\t\t\ttester_putstr(\".SIGSEGV! \" RESET);\n\t\t\t\tbreak;\n\t\t\tcase SIGKILL: /* killed because of timeout */\n\t\t\t\ttester_putstr(\".TIMEOUT! \" RESET);\n\t\t\t\tbreak;\n\t\t\tcase SIGABRT:\n\t\t\t\ttester_putstr(\".SIGABRT! \" RESET);\n\t\t\t\tbreak ;\n\t\t\tdefault: /* something yet to be discovered */\n\t\t\t\ttester_putstr(\".CRASH! wstatus: \");\n\t\t\t\ttester_putnbr(child_exit_status);\n\t\t\t\ttester_putstr(RESET);\n\t\t}\n\t\tprint_help(g_test_params);\n\t} else {\n\t\tfetch_result(user_r, user_output, output_pipe, return_pipe);\n\t\tcheck_result(user_r, orig_r, g_test_params);\n\t}\n}\n"
  },
  {
    "path": "test",
    "content": "#!/bin/sh\n\ngit pull\n\nNOSAN=\nBONUS=\n\nDAT_FEEL=\"\n+⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀ ⣀⣀⣤⣤⣤⣀⡀\n+⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀\n+⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆\n+⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆\n+⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆\n+⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠸⣼⡿\n+⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉\n+⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇\n+⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇\n+⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇\n+⠀⠀ ⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠇\n+⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇\n+⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃\n\"\n\nif [ $# -eq 0 ] || ([ $# -eq 1 ] && [ \"$1\" = \"nosan\" ])\nthen\n\tBONUS=\"bonus\"\nfi\n\nfor i in $@\ndo\n\tif [ \"$i\" = \"nosan\" ]\n\tthen\n\t\tNOSAN=\"nosan\"\n\tfi\n\tif [ \"$i\" = \"b\" ] || [ \"$i\" = \"b1\" ] || [ \"$i\" = \"b2\" ]\n\tthen\n\t\tBONUS=\"bonus\"\n\tfi\ndone\n\nmake ${BONUS}${NOSAN}\n\nif [ $? -ne 0 ]\nthen\n\techo -e \"\\033[1;31m\\ncompilation error.\\033[0;0m\"\n\techo -e \"\\033[1;32m${DAT_FEEL}\\033[0;0m\"\n\texit 1\nelse\n\techo \"./tester $@ 2>myleaks.txt\"\n\tLSAN_OPTIONS=exitcode=30 ./tester $@ 2>myleaks.txt || exit 2\nfi\n"
  }
]