[vte] prompt: Add a vte-urlencode-cwd utility
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] prompt: Add a vte-urlencode-cwd utility
- Date: Wed, 22 Jan 2020 17:06:26 +0000 (UTC)
commit 4c02a3e89eab6da68b63832ef7d6d5c5a2e7654a
Author: Carlos Santos <casantos redhat com>
Date: Wed Jan 22 18:06:28 2020 +0100
prompt: Add a vte-urlencode-cwd utility
This will be used by the shell prompt command to url-encode the
current directory (taken from PWD).
https://gitlab.gnome.org/GNOME/vte/issues/206
src/meson.build | 17 +++++++++++++++++
src/urlencode.cc | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 70 insertions(+)
---
diff --git a/src/meson.build b/src/meson.build
index 428afac6..b2e15d24 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -340,6 +340,23 @@ reflect_vte = executable(
install: false,
)
+# vte-urlencode-cwd
+
+vte_urlencode_cwd_sources = files(
+ 'urlencode.cc',
+)
+
+vte_urlencode_cwd = executable(
+ 'vte-urlencode-cwd',
+ cpp_args: [
+ '-nostdlib',
+ ],
+ include_directories: [top_inc,],
+ install: true,
+ install_dir: vte_libexecdir,
+ sources: vte_urlencode_cwd_sources,
+)
+
# xticker
xticker_sources = files(
diff --git a/src/urlencode.cc b/src/urlencode.cc
new file mode 100644
index 00000000..8b93ddc6
--- /dev/null
+++ b/src/urlencode.cc
@@ -0,0 +1,53 @@
+/*
+ * Copyright © 2019 Red Hat, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Red Hat Author(s): Carlos Santos
+ */
+
+#include "config.h"
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctype.h>
+
+#define SPECIALS "/:_.-!'()~"
+
+int
+main(int argc,
+ char *argv[])
+{
+ /* Note that we're not calling setlocale(LC_ALL, "") here on purpose,
+ * since we WANT this to run under C locale.
+ */
+
+ auto pwd = getenv("PWD");
+ if (pwd == nullptr) {
+ fprintf(stderr, "PWD environment variable not set");
+ return EXIT_FAILURE;
+ }
+
+ auto ch = int{};
+ while ((ch = *pwd++ & 0xff)) {
+ if (isalnum(ch) || strchr(SPECIALS, ch)) {
+ putchar(ch);
+ } else {
+ printf("%%%02X", ch);
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]