summaryrefslogtreecommitdiff
path: root/signals.c
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2019-03-13 21:22:32 -0400
committerJakob Kaivo <jkk@ung.org>2019-03-13 21:22:32 -0400
commit949f13f09d2fe8df841ab05dff271f46f9a55bf9 (patch)
treec9bf65495bc14ddbf816038bdd99981d7bb8f670 /signals.c
migrate to gitlab
Diffstat (limited to 'signals.c')
-rw-r--r--signals.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/signals.c b/signals.c
new file mode 100644
index 0000000..91d8a15
--- /dev/null
+++ b/signals.c
@@ -0,0 +1,55 @@
+/*
+ * UNG's Not GNU
+ *
+ * Copyright (c) 2011-2017, Jakob Kaivo <jkk@ung.org>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#include "ed.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+void ed_sigint(int sig)
+{
+}
+
+void ed_sighup(int sig)
+{
+ const char *filename = "ed.hup";
+
+ if (!ed_state.dirty) {
+ exit(sig);
+ }
+
+ if (access(filename, W_OK) == 0) {
+ ed_write(1, ed_state.nlines, filename);
+ exit(sig);
+ }
+
+ char *home = getenv("HOME");
+ if (home == NULL) {
+ exit(sig);
+ }
+
+ char path[strlen(home) + strlen(filename) + 2];
+ sprintf(path, "%s/%s", home, filename);
+ if (access(path, W_OK) == 0) {
+ ed_write(1, ed_state.nlines, path);
+ }
+
+ exit(sig);
+}