config: remove remaining "advanced" flags
The config "advanced" flag was unused and has been removed by 6a7a137f.
The unused parameter has been removed from many add_*()
macros:
The parameter advc
remained in 6 macros (but was unused internally):
add_string()
add_bool()
add_integer()
add_integer_with_range()
add_float()
add_float_with_range()
This MR removes them.
The diff may be view locally with:
git fetch origin merge-requests/200/head && git show FETCH_HEAD
It is humanly impossible to fix them manually.
It's not trivial to fix them automatically (for example with a simple sed
):
- many calls are multi-line
- many calls contains quoted commas
- many calls contains parameters with an additional level of parentheses
I initially wanted to use coccinelle with a patch looking like:
@@
expression a,b,c,d,e;
@@
-add_string(a,b,c,d,e)
+add_string(a,b,c,d)
Unfortunately, the specific syntax of VLC module macros could not be parsed:
parse error
= File "src/libvlc-module.c", line 1537, column 4, charpos = 67773
around = 'set_description',
whole content = set_description( N_("core program") )
Then, I attempted to use simple regexes (and fix the remaining manually), but there were too many instances of add_*()
with parameters containing a pair of parentheses, or string parameters containing commas, so it was too cumbersome.
I finally wrote a quick-and-dirty automaton:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
enum state {
NONE,
A,
AD,
ADD,
ADD_,
ADD_S,
ADD_ST,
ADD_STR,
ADD_STRI,
ADD_STRIN,
ADD_STRING,
ADD_I,
ADD_IN,
ADD_INT,
ADD_INTE,
ADD_INTEG,
ADD_INTEGE,
ADD_INTEGER,
ADD_INTEGER_,
ADD_INTEGER_W,
ADD_INTEGER_WI,
ADD_INTEGER_WIT,
ADD_INTEGER_WITH,
ADD_INTEGER_WITH_,
ADD_INTEGER_WITH_R,
ADD_INTEGER_WITH_RA,
ADD_INTEGER_WITH_RAN,
ADD_INTEGER_WITH_RANG,
ADD_INTEGER_WITH_RANGE,
ADD_B,
ADD_BO,
ADD_BOO,
ADD_BOOL,
ADD_F,
ADD_FL,
ADD_FLO,
ADD_FLOA,
ADD_FLOAT,
ADD_FLOAT_,
ADD_FLOAT_W,
ADD_FLOAT_WI,
ADD_FLOAT_WIT,
ADD_FLOAT_WITH,
ADD_FLOAT_WITH_,
ADD_FLOAT_WITH_R,
ADD_FLOAT_WITH_RA,
ADD_FLOAT_WITH_RAN,
ADD_FLOAT_WITH_RANG,
ADD_FLOAT_WITH_RANGE,
} state = NONE;
bool inhibit = false;
bool quote = false;
unsigned paren = 0;
unsigned param = 0;
int previous = 0;
int c;
#define TR(INIT,CHAR,NEW) \
case INIT: \
state = c == CHAR ? NEW : NONE; \
break
while ((c = getchar()) != -1) {
switch (state) {
case NONE:
if (c == 'a')
state = A;
break;
TR(A, 'd', AD);
TR(AD, 'd', ADD);
TR(ADD, '_', ADD_);
case ADD_:
if (c == 's')
state = ADD_S;
else if (c == 'i')
state = ADD_I;
else if (c == 'b')
state = ADD_B;
else if (c == 'f')
state = ADD_F;
else
state = NONE;
break;
TR(ADD_S, 't', ADD_ST);
TR(ADD_ST, 'r', ADD_STR);
TR(ADD_STR, 'i', ADD_STRI);
TR(ADD_STRI, 'n', ADD_STRIN);
TR(ADD_STRIN, 'g', ADD_STRING);
TR(ADD_I, 'n', ADD_IN);
TR(ADD_IN, 't', ADD_INT);
TR(ADD_INT, 'e', ADD_INTE);
TR(ADD_INTE, 'g', ADD_INTEG);
TR(ADD_INTEG, 'e', ADD_INTEGE);
TR(ADD_INTEGE, 'r', ADD_INTEGER);
TR(ADD_INTEGER_, 'w', ADD_INTEGER_W);
TR(ADD_INTEGER_W, 'i', ADD_INTEGER_WI);
TR(ADD_INTEGER_WI, 't', ADD_INTEGER_WIT);
TR(ADD_INTEGER_WIT, 'h', ADD_INTEGER_WITH);
TR(ADD_INTEGER_WITH, '_', ADD_INTEGER_WITH_);
TR(ADD_INTEGER_WITH_, 'r', ADD_INTEGER_WITH_R);
TR(ADD_INTEGER_WITH_R, 'a', ADD_INTEGER_WITH_RA);
TR(ADD_INTEGER_WITH_RA, 'n', ADD_INTEGER_WITH_RAN);
TR(ADD_INTEGER_WITH_RAN, 'g', ADD_INTEGER_WITH_RANG);
TR(ADD_INTEGER_WITH_RANG, 'e', ADD_INTEGER_WITH_RANGE);
TR(ADD_B, 'o', ADD_BO);
TR(ADD_BO, 'o', ADD_BOO);
TR(ADD_BOO, 'l', ADD_BOOL);
TR(ADD_F, 'l', ADD_FL);
TR(ADD_FL, 'o', ADD_FLO);
TR(ADD_FLO, 'a', ADD_FLOA);
TR(ADD_FLOA, 't', ADD_FLOAT);
TR(ADD_FLOAT_, 'w', ADD_FLOAT_W);
TR(ADD_FLOAT_W, 'i', ADD_FLOAT_WI);
TR(ADD_FLOAT_WI, 't', ADD_FLOAT_WIT);
TR(ADD_FLOAT_WIT, 'h', ADD_FLOAT_WITH);
TR(ADD_FLOAT_WITH, '_', ADD_FLOAT_WITH_);
TR(ADD_FLOAT_WITH_, 'r', ADD_FLOAT_WITH_R);
TR(ADD_FLOAT_WITH_R, 'a', ADD_FLOAT_WITH_RA);
TR(ADD_FLOAT_WITH_RA, 'n', ADD_FLOAT_WITH_RAN);
TR(ADD_FLOAT_WITH_RAN, 'g', ADD_FLOAT_WITH_RANG);
TR(ADD_FLOAT_WITH_RANG, 'e', ADD_FLOAT_WITH_RANGE);
case ADD_INTEGER:
case ADD_STRING:
case ADD_BOOL:
case ADD_FLOAT:
case ADD_INTEGER_WITH_RANGE:
case ADD_FLOAT_WITH_RANGE:
if (paren == 0 && c == '_') {
if (state == ADD_FLOAT) {
state = ADD_FLOAT_;
break;
} else if (state == ADD_INTEGER) {
state = ADD_INTEGER_;
break;
}
}
if (paren == 0 && c != ' ' && c != '(') {
state = NONE;
break;
}
unsigned param_to_remove = 4;
if (state == ADD_FLOAT_WITH_RANGE || state == ADD_INTEGER_WITH_RANGE)
param_to_remove += 2;
switch (c) {
case ',':
if (!quote && paren < 2) {
++param;
if (param >= param_to_remove)
inhibit = true;
}
break;
case '"':
quote = !quote; // escaping quotes is not managed
break;
case '(':
if (!quote)
++paren;
break;
case ')':
if (!quote) {
--paren;
if (paren == 0) {
state = NONE;
param = 0;
if (inhibit && previous == ' ')
putchar(' '); // leave a space if there was one
inhibit = false;
}
}
break;
}
break;
}
if (!inhibit)
putchar(c);
previous = c;
}
return 0;
}
And a little wrapper script, to run in the root VLC repository:
#!/bin/bash
cleanup() {
echo "$1"
<"$1" ./fix > /tmp/file
mv /tmp/file "$1"
}
export -f cleanup
find include src modules -type f \( -name '*\.c' -o -name '*\.h' -o -name '*\.hpp' -o -name '*\.cpp' -o -name '\*.m' \) -exec bash -c 'cleanup "{}"' ';'
In the end, I had to fix 2 things manually (one due to a #ifdef
and the other because the calls were hidden by an additional level of macros):
diff --git a/modules/demux/mock.c b/modules/demux/mock.c
index d645520ad0..3767d7b0ff 100644
--- a/modules/demux/mock.c
+++ b/modules/demux/mock.c
@@ -184,7 +184,7 @@ var_Read_float(const char *psz)
READ(group_name##_##var_name, group_name.var_name, getter)
#define DECLARE_MODULE_OPTIONS(var_name, type, module_header_type, getter, default_value) \
- module_header_type("mock-"#var_name, default_value, #var_name, NULL, true) \
+ module_header_type("mock-"#var_name, default_value, #var_name, NULL) \
change_volatile() \
change_safe()
#define DECLARE_MODULE_SUBOPTIONS(a,b,c,d,e,f) \
diff --git a/modules/gui/qt/qt.cpp b/modules/gui/qt/qt.cpp
index 7932954990..f486c3b634 100644
--- a/modules/gui/qt/qt.cpp
+++ b/modules/gui/qt/qt.cpp
@@ -339,7 +339,7 @@ vlc_module_begin ()
#else
true /* but not on linux */,
#endif
- QT_CLIENT_SIDE_DECORATION_TEXT )
+ QT_CLIENT_SIDE_DECORATION_TEXT, QT_CLIENT_SIDE_DECORATION_LONGTEXT )
#endif
add_bool( "qt-menubar", false, QT_MENUBAR_TEXT, QT_MENUBAR_LONGTEXT )
This MR is the result of the script + the patch above.