Skip to content

Commit 3e251f6

Browse files
committed
Packages: fix parsing of option --packages-disabled
1 parent ec25ca9 commit 3e251f6

File tree

1 file changed

+103
-43
lines changed

1 file changed

+103
-43
lines changed

src/modules/packages/packages.c

Lines changed: 103 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -123,33 +123,63 @@ bool ffParsePackagesCommandOptions(FFPackagesOptions* options, const char* key,
123123
*end = '\0';
124124

125125
#define FF_TEST_PACKAGE_NAME(name) else if (ffStrEqualsIgnCase(start, #name)) { options->disabled |= FF_PACKAGES_FLAG_ ## name ## _BIT; }
126-
if (false);
127-
FF_TEST_PACKAGE_NAME(APK)
128-
FF_TEST_PACKAGE_NAME(BREW)
129-
FF_TEST_PACKAGE_NAME(CHOCO)
130-
FF_TEST_PACKAGE_NAME(DPKG)
131-
FF_TEST_PACKAGE_NAME(EMERGE)
132-
FF_TEST_PACKAGE_NAME(EOPKG)
133-
FF_TEST_PACKAGE_NAME(FLATPAK)
134-
FF_TEST_PACKAGE_NAME(NIX)
135-
FF_TEST_PACKAGE_NAME(OPKG)
136-
FF_TEST_PACKAGE_NAME(PACMAN)
137-
FF_TEST_PACKAGE_NAME(PALUDIS)
138-
FF_TEST_PACKAGE_NAME(PKG)
139-
FF_TEST_PACKAGE_NAME(PKGTOOL)
140-
FF_TEST_PACKAGE_NAME(MACPORTS)
141-
FF_TEST_PACKAGE_NAME(RPM)
142-
FF_TEST_PACKAGE_NAME(SCOOP)
143-
FF_TEST_PACKAGE_NAME(SNAP)
144-
FF_TEST_PACKAGE_NAME(WINGET)
145-
FF_TEST_PACKAGE_NAME(XBPS)
146-
FF_TEST_PACKAGE_NAME(AM)
126+
switch (toupper(start[0]))
127+
{
128+
case 'A': if (false);
129+
FF_TEST_PACKAGE_NAME(APK)
130+
FF_TEST_PACKAGE_NAME(AM)
131+
break;
132+
case 'B': if (false);
133+
FF_TEST_PACKAGE_NAME(BREW)
134+
break;
135+
case 'C': if (false);
136+
FF_TEST_PACKAGE_NAME(CHOCO)
137+
break;
138+
case 'D': if (false);
139+
FF_TEST_PACKAGE_NAME(DPKG)
140+
break;
141+
case 'E': if (false);
142+
FF_TEST_PACKAGE_NAME(EMERGE)
143+
FF_TEST_PACKAGE_NAME(EOPKG)
144+
break;
145+
case 'F': if (false);
146+
FF_TEST_PACKAGE_NAME(FLATPAK)
147+
break;
148+
case 'M': if (false);
149+
FF_TEST_PACKAGE_NAME(MACPORTS)
150+
break;
151+
case 'N': if (false);
152+
FF_TEST_PACKAGE_NAME(NIX)
153+
break;
154+
case 'O': if (false);
155+
FF_TEST_PACKAGE_NAME(OPKG)
156+
break;
157+
case 'P': if (false);
158+
FF_TEST_PACKAGE_NAME(PACMAN)
159+
FF_TEST_PACKAGE_NAME(PKG)
160+
FF_TEST_PACKAGE_NAME(PKGTOOL)
161+
FF_TEST_PACKAGE_NAME(PALUDIS)
162+
break;
163+
case 'R': if (false);
164+
FF_TEST_PACKAGE_NAME(RPM)
165+
break;
166+
case 'S': if (false);
167+
FF_TEST_PACKAGE_NAME(SCOOP)
168+
FF_TEST_PACKAGE_NAME(SNAP)
169+
break;
170+
case 'W': if (false);
171+
FF_TEST_PACKAGE_NAME(WINGET)
172+
break;
173+
case 'X': if (false);
174+
FF_TEST_PACKAGE_NAME(XBPS)
175+
break;
176+
}
147177
#undef FF_TEST_PACKAGE_NAME
148178

149179
if (end)
150180
{
151181
start = end + 1;
152-
end = strchr(end, ':');
182+
end = strchr(start, ':');
153183
}
154184
else
155185
break;
@@ -193,27 +223,57 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module)
193223
const char* flag = yyjson_get_str(flagObj);
194224

195225
#define FF_TEST_PACKAGE_NAME(name) else if (ffStrEqualsIgnCase(flag, #name)) { options->disabled |= FF_PACKAGES_FLAG_ ## name ## _BIT; }
196-
if (false);
197-
FF_TEST_PACKAGE_NAME(APK)
198-
FF_TEST_PACKAGE_NAME(BREW)
199-
FF_TEST_PACKAGE_NAME(CHOCO)
200-
FF_TEST_PACKAGE_NAME(DPKG)
201-
FF_TEST_PACKAGE_NAME(EMERGE)
202-
FF_TEST_PACKAGE_NAME(EOPKG)
203-
FF_TEST_PACKAGE_NAME(FLATPAK)
204-
FF_TEST_PACKAGE_NAME(NIX)
205-
FF_TEST_PACKAGE_NAME(OPKG)
206-
FF_TEST_PACKAGE_NAME(PACMAN)
207-
FF_TEST_PACKAGE_NAME(PALUDIS)
208-
FF_TEST_PACKAGE_NAME(PKG)
209-
FF_TEST_PACKAGE_NAME(PKGTOOL)
210-
FF_TEST_PACKAGE_NAME(MACPORTS)
211-
FF_TEST_PACKAGE_NAME(RPM)
212-
FF_TEST_PACKAGE_NAME(SCOOP)
213-
FF_TEST_PACKAGE_NAME(SNAP)
214-
FF_TEST_PACKAGE_NAME(WINGET)
215-
FF_TEST_PACKAGE_NAME(XBPS)
216-
FF_TEST_PACKAGE_NAME(AM)
226+
switch (toupper(flag[0]))
227+
{
228+
case 'A': if (false);
229+
FF_TEST_PACKAGE_NAME(APK)
230+
FF_TEST_PACKAGE_NAME(AM)
231+
break;
232+
case 'B': if (false);
233+
FF_TEST_PACKAGE_NAME(BREW)
234+
break;
235+
case 'C': if (false);
236+
FF_TEST_PACKAGE_NAME(CHOCO)
237+
break;
238+
case 'D': if (false);
239+
FF_TEST_PACKAGE_NAME(DPKG)
240+
break;
241+
case 'E': if (false);
242+
FF_TEST_PACKAGE_NAME(EMERGE)
243+
FF_TEST_PACKAGE_NAME(EOPKG)
244+
break;
245+
case 'F': if (false);
246+
FF_TEST_PACKAGE_NAME(FLATPAK)
247+
break;
248+
case 'M': if (false);
249+
FF_TEST_PACKAGE_NAME(MACPORTS)
250+
break;
251+
case 'N': if (false);
252+
FF_TEST_PACKAGE_NAME(NIX)
253+
break;
254+
case 'O': if (false);
255+
FF_TEST_PACKAGE_NAME(OPKG)
256+
break;
257+
case 'P': if (false);
258+
FF_TEST_PACKAGE_NAME(PACMAN)
259+
FF_TEST_PACKAGE_NAME(PKG)
260+
FF_TEST_PACKAGE_NAME(PKGTOOL)
261+
FF_TEST_PACKAGE_NAME(PALUDIS)
262+
break;
263+
case 'R': if (false);
264+
FF_TEST_PACKAGE_NAME(RPM)
265+
break;
266+
case 'S': if (false);
267+
FF_TEST_PACKAGE_NAME(SCOOP)
268+
FF_TEST_PACKAGE_NAME(SNAP)
269+
break;
270+
case 'W': if (false);
271+
FF_TEST_PACKAGE_NAME(WINGET)
272+
break;
273+
case 'X': if (false);
274+
FF_TEST_PACKAGE_NAME(XBPS)
275+
break;
276+
}
217277
#undef FF_TEST_PACKAGE_NAME
218278
}
219279
}

0 commit comments

Comments
 (0)