OXIESEC PANEL
- Current Dir:
/
/
usr
/
src
/
linux-headers-4.15.0-213
/
scripts
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
.gitignore
162 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
Kbuild.include
18.36 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Lindent
502 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
Makefile
1.9 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.asm-generic
1.17 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.build
20.68 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.clean
2.96 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.dtbinst
1.09 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.extrawarn
2.9 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.gcc-plugins
3.75 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.headersinst
3.98 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.host
6.23 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.kasan
1.09 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.kcov
201 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.lib
15.25 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.modbuiltin
1.82 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.modinst
1.52 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.modpost
5.43 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
Makefile.modsign
1.02 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
Makefile.ubsan
1.07 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
adjust_autoksyms.sh
3.09 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
asn1_compiler.c
35.54 KB
01/28/2018 09:20:33 PM
rw-r--r--
📁
basic
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
bloat-o-meter
3.22 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
bootgraph.pl
6.28 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
check_00index.sh
1.3 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
check_extable.sh
4.93 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
checkincludes.pl
1.94 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
checkkconfigsymbols.py
15.51 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
checkpatch.pl
186.79 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
checkstack.pl
5.49 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
checksyscalls.sh
5.68 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
checkversion.pl
1.9 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
cleanfile
3.46 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
cleanpatch
5.06 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
coccicheck
7.24 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📁
coccinelle
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
config
4.64 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
conmakehash.c
5.98 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
const_structs.checkpatch
964 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
decode_stacktrace.sh
3.82 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
decodecode
2.3 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
depmod.sh
1.94 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
diffconfig
3.72 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
documentation-file-ref-check
395 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
dtc
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
export_report.pl
4.55 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
extract-cert.c
3.63 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
extract-ikconfig
1.69 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
extract-module-sig.pl
3.66 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
extract-sys-certs.pl
3.75 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
extract-vmlinux
1.6 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
extract_xc3028.pl
44.6 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
faddr2line
5.53 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
find-unused-docs.sh
1.27 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
gcc-goto.sh
530 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
gcc-ld
711 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
gcc-plugin.sh
1.06 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
gcc-plugins
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
gcc-version.sh
857 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
gcc-x86_32-has-stack-protector.sh
219 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
gcc-x86_64-has-stack-protector.sh
244 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
gdb
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
gen_initramfs_list.sh
8.03 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
genksyms
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
get_dvb_firmware
25.22 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
get_maintainer.pl
65.03 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
gfp-translate
1.71 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
headerdep.pl
3.5 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
headers.sh
512 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
headers_check.pl
3.73 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
headers_install.sh
1.32 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
insert-sys-cert.c
13.08 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
kallsyms.c
18.89 KB
06/16/2023 05:32:39 PM
rw-r--r--
📁
kconfig
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
kernel-doc
92.36 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
kmsg-doc
12.13 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📁
ksymoops
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
ld-version.sh
269 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
leaking_addresses.pl
9.65 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
link-vmlinux.sh
7.65 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
makelst
808 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
markup_oops.pl
8.08 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
mkcompile_h
2.74 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
mkmakefile
1.19 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
mksysmap
1.34 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
mkuboot.sh
414 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
mod
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
module-common.lds
901 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
namespace.pl
13.18 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
objdiff
2.85 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
package
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
parse-maintainers.pl
3.72 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
patch-kernel
9.95 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
pnmtologo.c
11.91 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
profile2linkerlist.pl
414 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
prune-kernel
708 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
recordmcount.c
17.49 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
recordmcount.h
16.4 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
recordmcount.pl
18.41 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📁
selinux
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
setlocalversion
4.72 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
show_delta
2.99 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
sign-file.c
9.93 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
sortextable.c
8.35 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
sortextable.h
5.48 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
spelling.txt
24.97 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
sphinx-pre-install
14.04 KB
06/16/2023 05:32:39 PM
rwxr-xr-x
📄
stackdelta
1.84 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
stackusage
794 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
subarch.include
641 bytes
06/16/2023 05:32:39 PM
rw-r--r--
📄
tags.sh
9.49 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📁
tracing
-
05/09/2024 07:14:16 AM
rwxr-xr-x
📄
ubuntu-retpoline-extract-one
7.26 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
unifdef.c
34.8 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
ver_linux
2.94 KB
01/28/2018 09:20:33 PM
rwxr-xr-x
📄
xen-hypercalls.sh
386 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
xz_wrap.sh
562 bytes
01/28/2018 09:20:33 PM
rwxr-xr-x
Editing: pnmtologo.c
Close
/* * Convert a logo in ASCII PNM format to C source suitable for inclusion in * the Linux kernel * * (C) Copyright 2001-2003 by Geert Uytterhoeven <geert@linux-m68k.org> * * -------------------------------------------------------------------------- * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of the Linux * distribution for more details. */ #include <ctype.h> #include <errno.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> static const char *programname; static const char *filename; static const char *logoname = "linux_logo"; static const char *outputname; static FILE *out; #define LINUX_LOGO_MONO 1 /* monochrome black/white */ #define LINUX_LOGO_VGA16 2 /* 16 colors VGA text palette */ #define LINUX_LOGO_CLUT224 3 /* 224 colors */ #define LINUX_LOGO_GRAY256 4 /* 256 levels grayscale */ static const char *logo_types[LINUX_LOGO_GRAY256+1] = { [LINUX_LOGO_MONO] = "LINUX_LOGO_MONO", [LINUX_LOGO_VGA16] = "LINUX_LOGO_VGA16", [LINUX_LOGO_CLUT224] = "LINUX_LOGO_CLUT224", [LINUX_LOGO_GRAY256] = "LINUX_LOGO_GRAY256" }; #define MAX_LINUX_LOGO_COLORS 224 struct color { unsigned char red; unsigned char green; unsigned char blue; }; static const struct color clut_vga16[16] = { { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0xaa }, { 0x00, 0xaa, 0x00 }, { 0x00, 0xaa, 0xaa }, { 0xaa, 0x00, 0x00 }, { 0xaa, 0x00, 0xaa }, { 0xaa, 0x55, 0x00 }, { 0xaa, 0xaa, 0xaa }, { 0x55, 0x55, 0x55 }, { 0x55, 0x55, 0xff }, { 0x55, 0xff, 0x55 }, { 0x55, 0xff, 0xff }, { 0xff, 0x55, 0x55 }, { 0xff, 0x55, 0xff }, { 0xff, 0xff, 0x55 }, { 0xff, 0xff, 0xff }, }; static int logo_type = LINUX_LOGO_CLUT224; static unsigned int logo_width; static unsigned int logo_height; static struct color **logo_data; static struct color logo_clut[MAX_LINUX_LOGO_COLORS]; static unsigned int logo_clutsize; static int is_plain_pbm = 0; static void die(const char *fmt, ...) __attribute__ ((noreturn)) __attribute ((format (printf, 1, 2))); static void usage(void) __attribute ((noreturn)); static unsigned int get_number(FILE *fp) { int c, val; /* Skip leading whitespace */ do { c = fgetc(fp); if (c == EOF) die("%s: end of file\n", filename); if (c == '#') { /* Ignore comments 'till end of line */ do { c = fgetc(fp); if (c == EOF) die("%s: end of file\n", filename); } while (c != '\n'); } } while (isspace(c)); /* Parse decimal number */ val = 0; while (isdigit(c)) { val = 10*val+c-'0'; /* some PBM are 'broken'; GiMP for example exports a PBM without space * between the digits. This is Ok cause we know a PBM can only have a '1' * or a '0' for the digit. */ if (is_plain_pbm) break; c = fgetc(fp); if (c == EOF) die("%s: end of file\n", filename); } return val; } static unsigned int get_number255(FILE *fp, unsigned int maxval) { unsigned int val = get_number(fp); return (255*val+maxval/2)/maxval; } static void read_image(void) { FILE *fp; unsigned int i, j; int magic; unsigned int maxval; /* open image file */ fp = fopen(filename, "r"); if (!fp) die("Cannot open file %s: %s\n", filename, strerror(errno)); /* check file type and read file header */ magic = fgetc(fp); if (magic != 'P') die("%s is not a PNM file\n", filename); magic = fgetc(fp); switch (magic) { case '1': case '2': case '3': /* Plain PBM/PGM/PPM */ break; case '4': case '5': case '6': /* Binary PBM/PGM/PPM */ die("%s: Binary PNM is not supported\n" "Use pnmnoraw(1) to convert it to ASCII PNM\n", filename); default: die("%s is not a PNM file\n", filename); } logo_width = get_number(fp); logo_height = get_number(fp); /* allocate image data */ logo_data = (struct color **)malloc(logo_height*sizeof(struct color *)); if (!logo_data) die("%s\n", strerror(errno)); for (i = 0; i < logo_height; i++) { logo_data[i] = malloc(logo_width*sizeof(struct color)); if (!logo_data[i]) die("%s\n", strerror(errno)); } /* read image data */ switch (magic) { case '1': /* Plain PBM */ is_plain_pbm = 1; for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) logo_data[i][j].red = logo_data[i][j].green = logo_data[i][j].blue = 255*(1-get_number(fp)); break; case '2': /* Plain PGM */ maxval = get_number(fp); for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) logo_data[i][j].red = logo_data[i][j].green = logo_data[i][j].blue = get_number255(fp, maxval); break; case '3': /* Plain PPM */ maxval = get_number(fp); for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) { logo_data[i][j].red = get_number255(fp, maxval); logo_data[i][j].green = get_number255(fp, maxval); logo_data[i][j].blue = get_number255(fp, maxval); } break; } /* close file */ fclose(fp); } static inline int is_black(struct color c) { return c.red == 0 && c.green == 0 && c.blue == 0; } static inline int is_white(struct color c) { return c.red == 255 && c.green == 255 && c.blue == 255; } static inline int is_gray(struct color c) { return c.red == c.green && c.red == c.blue; } static inline int is_equal(struct color c1, struct color c2) { return c1.red == c2.red && c1.green == c2.green && c1.blue == c2.blue; } static void write_header(void) { /* open logo file */ if (outputname) { out = fopen(outputname, "w"); if (!out) die("Cannot create file %s: %s\n", outputname, strerror(errno)); } else { out = stdout; } fputs("/*\n", out); fputs(" * DO NOT EDIT THIS FILE!\n", out); fputs(" *\n", out); fprintf(out, " * It was automatically generated from %s\n", filename); fputs(" *\n", out); fprintf(out, " * Linux logo %s\n", logoname); fputs(" */\n\n", out); fputs("#include <linux/linux_logo.h>\n\n", out); fprintf(out, "static unsigned char %s_data[] __initdata = {\n", logoname); } static void write_footer(void) { fputs("\n};\n\n", out); fprintf(out, "const struct linux_logo %s __initconst = {\n", logoname); fprintf(out, "\t.type\t\t= %s,\n", logo_types[logo_type]); fprintf(out, "\t.width\t\t= %d,\n", logo_width); fprintf(out, "\t.height\t\t= %d,\n", logo_height); if (logo_type == LINUX_LOGO_CLUT224) { fprintf(out, "\t.clutsize\t= %d,\n", logo_clutsize); fprintf(out, "\t.clut\t\t= %s_clut,\n", logoname); } fprintf(out, "\t.data\t\t= %s_data\n", logoname); fputs("};\n\n", out); /* close logo file */ if (outputname) fclose(out); } static int write_hex_cnt; static void write_hex(unsigned char byte) { if (write_hex_cnt % 12) fprintf(out, ", 0x%02x", byte); else if (write_hex_cnt) fprintf(out, ",\n\t0x%02x", byte); else fprintf(out, "\t0x%02x", byte); write_hex_cnt++; } static void write_logo_mono(void) { unsigned int i, j; unsigned char val, bit; /* validate image */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) if (!is_black(logo_data[i][j]) && !is_white(logo_data[i][j])) die("Image must be monochrome\n"); /* write file header */ write_header(); /* write logo data */ for (i = 0; i < logo_height; i++) { for (j = 0; j < logo_width;) { for (val = 0, bit = 0x80; bit && j < logo_width; j++, bit >>= 1) if (logo_data[i][j].red) val |= bit; write_hex(val); } } /* write logo structure and file footer */ write_footer(); } static void write_logo_vga16(void) { unsigned int i, j, k; unsigned char val; /* validate image */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) { for (k = 0; k < 16; k++) if (is_equal(logo_data[i][j], clut_vga16[k])) break; if (k == 16) die("Image must use the 16 console colors only\n" "Use ppmquant(1) -map clut_vga16.ppm to reduce the number " "of colors\n"); } /* write file header */ write_header(); /* write logo data */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) { for (k = 0; k < 16; k++) if (is_equal(logo_data[i][j], clut_vga16[k])) break; val = k<<4; if (++j < logo_width) { for (k = 0; k < 16; k++) if (is_equal(logo_data[i][j], clut_vga16[k])) break; val |= k; } write_hex(val); } /* write logo structure and file footer */ write_footer(); } static void write_logo_clut224(void) { unsigned int i, j, k; /* validate image */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) { for (k = 0; k < logo_clutsize; k++) if (is_equal(logo_data[i][j], logo_clut[k])) break; if (k == logo_clutsize) { if (logo_clutsize == MAX_LINUX_LOGO_COLORS) die("Image has more than %d colors\n" "Use ppmquant(1) to reduce the number of colors\n", MAX_LINUX_LOGO_COLORS); logo_clut[logo_clutsize++] = logo_data[i][j]; } } /* write file header */ write_header(); /* write logo data */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) { for (k = 0; k < logo_clutsize; k++) if (is_equal(logo_data[i][j], logo_clut[k])) break; write_hex(k+32); } fputs("\n};\n\n", out); /* write logo clut */ fprintf(out, "static unsigned char %s_clut[] __initdata = {\n", logoname); write_hex_cnt = 0; for (i = 0; i < logo_clutsize; i++) { write_hex(logo_clut[i].red); write_hex(logo_clut[i].green); write_hex(logo_clut[i].blue); } /* write logo structure and file footer */ write_footer(); } static void write_logo_gray256(void) { unsigned int i, j; /* validate image */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) if (!is_gray(logo_data[i][j])) die("Image must be grayscale\n"); /* write file header */ write_header(); /* write logo data */ for (i = 0; i < logo_height; i++) for (j = 0; j < logo_width; j++) write_hex(logo_data[i][j].red); /* write logo structure and file footer */ write_footer(); } static void die(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); exit(1); } static void usage(void) { die("\n" "Usage: %s [options] <filename>\n" "\n" "Valid options:\n" " -h : display this usage information\n" " -n <name> : specify logo name (default: linux_logo)\n" " -o <output> : output to file <output> instead of stdout\n" " -t <type> : specify logo type, one of\n" " mono : monochrome black/white\n" " vga16 : 16 colors VGA text palette\n" " clut224 : 224 colors (default)\n" " gray256 : 256 levels grayscale\n" "\n", programname); } int main(int argc, char *argv[]) { int opt; programname = argv[0]; opterr = 0; while (1) { opt = getopt(argc, argv, "hn:o:t:"); if (opt == -1) break; switch (opt) { case 'h': usage(); break; case 'n': logoname = optarg; break; case 'o': outputname = optarg; break; case 't': if (!strcmp(optarg, "mono")) logo_type = LINUX_LOGO_MONO; else if (!strcmp(optarg, "vga16")) logo_type = LINUX_LOGO_VGA16; else if (!strcmp(optarg, "clut224")) logo_type = LINUX_LOGO_CLUT224; else if (!strcmp(optarg, "gray256")) logo_type = LINUX_LOGO_GRAY256; else usage(); break; default: usage(); break; } } if (optind != argc-1) usage(); filename = argv[optind]; read_image(); switch (logo_type) { case LINUX_LOGO_MONO: write_logo_mono(); break; case LINUX_LOGO_VGA16: write_logo_vga16(); break; case LINUX_LOGO_CLUT224: write_logo_clut224(); break; case LINUX_LOGO_GRAY256: write_logo_gray256(); break; } exit(0); }