From 0a05ee797d7b6e14d3f927c1965ae320a84fe796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 30 Aug 2004 16:21:47 +0000 Subject: [PATCH] WIP of header generation git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8728 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/bin/keymap/Keymap.cpp | 24 ++++++++++++++++++++++++ src/apps/bin/keymap/Keymap.h | 1 + src/apps/bin/keymap/key_map.cpp | 11 ++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/apps/bin/keymap/Keymap.cpp b/src/apps/bin/keymap/Keymap.cpp index da2395a6ff..b64bdf3c80 100644 --- a/src/apps/bin/keymap/Keymap.cpp +++ b/src/apps/bin/keymap/Keymap.cpp @@ -693,6 +693,30 @@ Keymap::Save(entry_ref &ref) } +const char header_header[] = +"/*\tHaiku \t*/" +"/*\n" +" This file is generated automatically. Don't edit ! \n" +"*/\n"; + + + +void +Keymap::SaveAsHeader(entry_ref &ref) +{ + status_t err; + + BFile file(&ref, B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE ); + if ((err = file.InitCheck()) != B_OK) { + printf("error %s\n", strerror(err)); + return; + } + + file.Write(header_header, strlen(header_header)); + +} + + /* we need to know if a key is a modifier key to choose a valid key when several are pressed together */ diff --git a/src/apps/bin/keymap/Keymap.h b/src/apps/bin/keymap/Keymap.h index 094f4c30b7..da9da2c8d6 100644 --- a/src/apps/bin/keymap/Keymap.h +++ b/src/apps/bin/keymap/Keymap.h @@ -29,6 +29,7 @@ public: status_t LoadSource(FILE *f); status_t LoadSourceFromRef(entry_ref &ref); void SaveAsCurrent(); + void SaveAsHeader(entry_ref &ref); status_t Use(); void Dump(); bool IsModifierKey(uint32 keyCode); diff --git a/src/apps/bin/keymap/key_map.cpp b/src/apps/bin/keymap/key_map.cpp index 14d2a6a4bf..e9b8f90c63 100644 --- a/src/apps/bin/keymap/key_map.cpp +++ b/src/apps/bin/keymap/key_map.cpp @@ -26,6 +26,7 @@ static void usage(char *prog) " -l # load key map from standard input\n" " -r # restore system default key map\n" " -c # compile source keymap to binary\n" +" -h # compile source keymap to header\n" " -o # change output file to output_file (default:keymap.out)\n" , prog); } @@ -70,7 +71,15 @@ int main(int argc, char **argv) keymap.Save(output_ref); return 0; - } else + } else if (operation == 'h') { + entry_ref ref; + get_ref_for_path(argv[i], &ref); + Keymap keymap; + keymap.LoadSourceFromRef(ref); + + keymap.SaveAsHeader(output_ref); + return 0; + } else break; } }