diff --git a/browser-plugins/webextension/manifest.json b/browser-plugins/webextension/manifest.json index 4626032..158291a 100644 --- a/browser-plugins/webextension/manifest.json +++ b/browser-plugins/webextension/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "remwharead", - "version": "0.4.1", + "version": "0.5.0", "description": "Integrates remwharead into your Browser.", "homepage_url": "https://schlomp.space/tastytea/remwharead", diff --git a/browser-plugins/webextension/native-wrapper/remwharead_wrapper.cpp b/browser-plugins/webextension/native-wrapper/remwharead_wrapper.cpp index 06c4b1a..2751e5f 100644 --- a/browser-plugins/webextension/native-wrapper/remwharead_wrapper.cpp +++ b/browser-plugins/webextension/native-wrapper/remwharead_wrapper.cpp @@ -14,6 +14,8 @@ * along with this program. If not, see . */ +// TODO: Rewrite this in understandable code. + #include #include #include @@ -30,7 +32,7 @@ using std::system; string read_input(); void send_message(const string &message); int launch(const string &args); -string decode_args(const string &args); +string decode_args(string args); void replace_in_field(string &field); string read_input() @@ -80,9 +82,17 @@ int launch(const string &args) return ret; } -string decode_args(const string &args) +string decode_args(string args) { - constexpr char separator{'\u001F'}; // UNIT SEPARATOR. + { // The string we get is escaped. + size_t pos{0}; + while ((pos = args.find(R"(\u001f)", pos)) != string::npos) + { + args.replace(pos, 6, "\u001f"); + } + } + + constexpr char separator{'\u001f'}; // UNIT SEPARATOR. if (args[0] != separator) // Extension uses old method. { return args; @@ -112,6 +122,7 @@ void replace_in_field(string &field) } } + int main() { const string args = read_input(); diff --git a/browser-plugins/webextension/popup.js b/browser-plugins/webextension/popup.js index 8986af0..6d4eb0a 100644 --- a/browser-plugins/webextension/popup.js +++ b/browser-plugins/webextension/popup.js @@ -7,12 +7,13 @@ const chkarchive = document.getElementById("chkarchive"); const btnadd = document.getElementById("btnadd"); const msgstatus = document.getElementById("msgstatus"); const msgerror = document.getElementById("msgerror"); +const separator = '\u001f'; function set_taburl(tabs) // Set taburl to URL of current tab. { const tab = tabs[0]; - taburl = '\'' + tab.url + '\''; + taburl = separator + tab.url + separator; } function get_tags() // get tags from text input. @@ -20,7 +21,7 @@ function get_tags() // get tags from text input. const tags = txttags.value; if (tags != "") { - return "-t '" + tags + "' "; + return separator + "-t " + tags; } return ""; } @@ -72,7 +73,7 @@ function add() let archive = ""; if (chkarchive.checked === false) { - archive = "--no-archive "; + archive = separator + "--no-archive"; } const args = get_tags() + archive + taburl; console.log(args);