summaryrefslogtreecommitdiff
path: root/words-misc
diff options
context:
space:
mode:
authorDavid Phillips <david@sighup.nz>2017-01-05 22:42:37 +1300
committerDavid Phillips <david@sighup.nz>2017-01-05 22:42:37 +1300
commite452f3d9975208a9e746a4993d17ef4bd3879c14 (patch)
tree3edec6a3265088ba7ce0dd799f34a073f30be7d1 /words-misc
parentfe85861f176998d694566b6718125848bd8f52be (diff)
downloadodds-and-ends-e452f3d9975208a9e746a4993d17ef4bd3879c14.tar.xz
Move words-misc into subdirectory
Diffstat (limited to 'words-misc')
-rw-r--r--words-misc/LICENCE27
-rw-r--r--words-misc/Makefile3
-rw-r--r--words-misc/config.mk1
-rw-r--r--words-misc/match_pool.c50
4 files changed, 81 insertions, 0 deletions
diff --git a/words-misc/LICENCE b/words-misc/LICENCE
new file mode 100644
index 0000000..cd46956
--- /dev/null
+++ b/words-misc/LICENCE
@@ -0,0 +1,27 @@
+/*
+ * words-misc - Tools I write to assist with word games
+ * Copyright (c) 2016 David Phillips <dbphillipsnz@gmail.com>
+ * All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
diff --git a/words-misc/Makefile b/words-misc/Makefile
new file mode 100644
index 0000000..a0e6cb9
--- /dev/null
+++ b/words-misc/Makefile
@@ -0,0 +1,3 @@
+include config.mk
+
+all: match_pool
diff --git a/words-misc/config.mk b/words-misc/config.mk
new file mode 100644
index 0000000..e8c9b31
--- /dev/null
+++ b/words-misc/config.mk
@@ -0,0 +1 @@
+CFLAGS += -Wall -Wextra -Werror
diff --git a/words-misc/match_pool.c b/words-misc/match_pool.c
new file mode 100644
index 0000000..eda8f61
--- /dev/null
+++ b/words-misc/match_pool.c
@@ -0,0 +1,50 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main(int argc, char **argv)
+{
+ int i = 0;
+ char buffer[1024];
+ char *res = NULL;
+ char *pool = NULL;
+ char *local_pool = NULL;
+ size_t pool_size = 0;
+
+
+ if (argc != 2)
+ {
+ fprintf(stderr, "Usage: %s <character pool>\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ pool = argv[1];
+ pool_size = strlen(pool);
+
+ local_pool = malloc(pool_size);
+ if (local_pool == NULL)
+ {
+ fprintf(stderr, "%s: malloc for local pool failed\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ while (fgets(buffer, sizeof(buffer), stdin))
+ {
+ buffer[strcspn(buffer, "\r\n")] = '\0'; /* chomp */
+
+ if (strlen(buffer) == 0)
+ continue;
+
+ strcpy(local_pool, pool);
+ for (i = strlen(buffer)-1; i >= 0; i--)
+ {
+ if ((res = memchr(local_pool, buffer[i], pool_size)) != NULL)
+ *res = '\0';
+ else
+ break;
+ }
+ printf("%s %s\n", buffer, i < 0? "matches" : "doesn't match" );
+ }
+ free(local_pool);
+ return 0;
+}