From 5021e5a86b90983f60f10f73b1949c7c2db5674a Mon Sep 17 00:00:00 2001 From: auric Date: Sun, 25 Feb 2024 21:09:38 -0600 Subject: [PATCH] Improve flags using bitwise operations --- bin/fex | Bin 25448 -> 25392 bytes obj/fex.o | Bin 11152 -> 11216 bytes obj/sanity.o | Bin 7024 -> 6016 bytes src/fex.c | 64 +++++++++++++++++++++++++++++---------------------- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/bin/fex b/bin/fex index 59ec24f13d57e4654664cfb1ad3b7c0cdeed068d..26bcefd9c7aa921bb32f88082dd84c35cc8d5813 100755 GIT binary patch delta 7852 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 ODzBc($E*3(!~YkykXEh$ delta 8627 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 C;yqXZ diff --git a/obj/sanity.o b/obj/sanity.o index 9f386d5ef9489fa51ff4ca9afdc6ec3392ec20cd..6d6737fe527ea9ffbb89c810674a4c562b8991cb 100644 GIT binary patch literal 6016 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 W$N^-t*!+#abg1|$nE#Fc6aPQ11XG^? literal 7024 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 VV&@N@Pi^_T)BfZ6h<9$o|9{3>T37%8 diff --git a/src/fex.c b/src/fex.c index 212f66d..f6fc774 100644 --- a/src/fex.c +++ b/src/fex.c @@ -11,13 +11,23 @@ #include "config.h" #include "debug.h" +enum Flags { + FLAG_INSTALL = 1 << 0, + FLAG_UPDATE = 1 << 1, + FLAG_SOURCE = 1 << 2, + FLAG_UNINSTALL = 1 << 3, + FLAG_LIST = 1 << 4, + FLAG_SEARCH = 1 << 5, + FLAG_FORCE = 1 << 6, + FLAG_UPGRADE = 1 << 7, +}; void help() { nprint("E", "Usage: fex (OPT) (PACKAGES)"); } int main(int argc, char** argv) { - int fIns = 0, fUpd = 0, fSrc = 0, fUin = 0, fLis = 0, fSer = 0, fVer = 0, fFrc = 0, fUpg = 0; + unsigned short flags = 0; char* packages[argc - 1]; int pkgCount = 0; if (argc < 2) { @@ -25,38 +35,33 @@ int main(int argc, char** argv) { return 1; } - - for(int i = 1; i < argc; i++) { if(argv[i][0] == '-') { for(int j = 1; argv[i][j] != '\0'; j++) { switch(argv[i][j]) { - case 'i': // install - fIns = 1; + case 'i': // install, 0 + flags |= FLAG_INSTALL; break; - case 'u': // update - fUpd = 1; + case 'u': // update, 1 + flags |= FLAG_UPDATE; break; - case 'S': // source - fSrc = 1; + case 'S': // source, 2 + flags |= FLAG_SOURCE; break; - case 'r': // remove - fUin = 1; + case 'r': // remove, 3 + flags |= FLAG_UNINSTALL; break; - case 'l': // list - fLis = 1; + case 'l': // list, 4 + flags |= FLAG_LIST; break; - case 's': // search - fSer = 1; + case 's': // search, 5 + flags |= FLAG_SEARCH; break; - case 'v': // verbose - fVer = 1; + case 'f': // force, 6 + flags |= FLAG_FORCE; break; - case 'f': // force - fFrc = 1; - break; - case 'c': // upgrade; don't ask why I'm using 'c' - fUpg = 1; + case 'c': // upgrade; don't ask why I'm using 'c', 7 + flags |= FLAG_UPGRADE; break; default: nprint("E", "Flag '%c' is unknown.", argv[i][j]); @@ -72,12 +77,15 @@ int main(int argc, char** argv) { #ifdef debugEnabled DEBUG_PRINT("sysSanity: %d", sysSanity); - const char* flagNames[] = {"Install", "Update", "Source", "Remove", "List", "Search","Verbose", "Force", "Upgrade"}; - int* flagValues[] = {&fIns, &fUpd, &fSrc, &fUin, &fLis, &fSer, &fVer, &fFrc, &fUpg}; - int flagCount = sizeof(flagNames) / sizeof(flagNames[0]); // This should match the number of flags - - for(int i = 0; i < flagCount; i++) { - nprint("D", "Flag %s: %d", flagNames[i], *flagValues[i]); + unsigned int flag_values[] = {0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b10000000}; + char* flag_names[] = {"Install", "Update", "Source", "Uninstall", "List", "Search", "Force", "Upgrade"}; + int num_flags = sizeof(flag_values) / sizeof(flag_values[0]); + for(int i = 0; i < num_flags; i++) { + if (flags & flag_values[i]) { + nprint("D", "%s flag is set.", flag_names[i]); + } else { + nprint("D", "%s flag is not set.", flag_names[i]); + } } for(int i = 0; i < pkgCount; i++) { nprint("D", "Package %d: %s", i, packages[i]);