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);