📄 lmmtolso.c
字号:
#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>int main(void){ FILE *lmm; /* mmap-able file */ FILE *lso; /* static object */ struct stat fd_stat; int c; size_t i; if (!(lmm = fopen("locale.mmap", "r"))) { printf("can't open locale.mmap!\n"); return EXIT_FAILURE; } if (fstat(fileno(lmm), &fd_stat)) { printf("can't stat locale.mmap!\n"); fclose(lmm); return EXIT_FAILURE; } if (!(lso = fopen("locale_data.c", "w"))) { printf("can't open locale_data.c!\n"); fclose(lmm); return EXIT_FAILURE; } fprintf(lso, "#include <stddef.h>\n" "#include <stdint.h>\n" "#include \"lt_defines.h\"\n" "#include \"locale_mmap.h\"\n\n" "typedef union {\n" "\tunsigned char buf[%zu];\n" "\t__locale_mmap_t lmm;\n" "} locale_union_t;\n\n" "static const locale_union_t locale_union = { {", (size_t) fd_stat.st_size ); i = 0; while ((c = getc(lmm)) != EOF) { if (!(i & 0x7)) { fprintf(lso, "\n\t"); } fprintf(lso, "%#04x, ", c); ++i; } fprintf(lso, "\n} };\n\n" "const __locale_mmap_t *__locale_mmap = &locale_union.lmm;\n\n" ); if (ferror(lmm)) { printf("error reading!\n"); return EXIT_FAILURE; } if (ferror(lso) || fclose(lso)) { printf("error writing!\n"); return EXIT_FAILURE; } fclose(lmm); return EXIT_SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -