subu -> subudb checkpoint
authorThomas Walker Lynch <thomas.lynch@reasoningtechnology.com>
Mon, 11 Mar 2019 14:44:01 +0000 (15:44 +0100)
committerThomas Walker Lynch <thomas.lynch@reasoningtechnology.com>
Mon, 11 Mar 2019 14:44:01 +0000 (15:44 +0100)
18 files changed:
src/2_bin/setuid_root.sh [new file with mode: 0755]
src/3_documents/todo.txt [deleted file]
src/3_to_do.txt
src/5_scratch/subu-rel-get.cli.h [new file with mode: 0644]
src/5_scratch/subu-rel-put.cli.h [new file with mode: 0644]
src/5_scratch/subu-rel-rm.cli.h [new file with mode: 0644]
src/5_scratch/subu-rm-0.cli.h [new file with mode: 0644]
src/setuid_root.sh [deleted file]
src/subu-config.lib.c
src/subu-get.cli.c [deleted file]
src/subu-init.cli.c
src/subu-put.cli.c [deleted file]
src/subu-rel-get.cli.c [new file with mode: 0644]
src/subu-rel-put.cli.c [new file with mode: 0644]
src/subu-rel-rm.cli.c [new file with mode: 0644]
src/subu-rm-0.cli.c [new file with mode: 0644]
src/subu-rm.cli.c [deleted file]
src/subu.lib.c

diff --git a/src/2_bin/setuid_root.sh b/src/2_bin/setuid_root.sh
new file mode 100755 (executable)
index 0000000..bea2d00
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+# must be run under sudo
+# be sure to cat it before running it, better yet just type this in manually
+#
+
+chown root $1 && \
+chmod u+rsx,u-w,go+rx-s-w $1
+
diff --git a/src/3_documents/todo.txt b/src/3_documents/todo.txt
deleted file mode 100644 (file)
index e712c5a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1. in subu.lib.c append cascading rmdir failure mess to useradd failure mess
index d5f0e34..eebf52a 100644 (file)
@@ -1,10 +1,19 @@
-2019-02-05T23:14:40Z morpheus@manorhouse§~/src/subu§
+2019-02-05T23:14:40Z
   error can cause subu-mk-0 to leave the creating of a subu in an intermediate
   state.  Rather than bailing on some of the errors we need to clean up instead.
   Perhaps the yet to be written subu-rm program will be resilent enough to do
   more general cleanup.
 
-2019-02-23T18:56:31Z morpheus@manorhouse§~/subu_land/subu/src§
+2019-02-23T18:56:31Z
   need to modify subu-init to take a configuration file name argument instead of
   using a global variabel value.  might want to add arguments to other subu
   commands also
+
+2019-03-11T13:48:03Z
+  in subu.lib.c append cascading rmdir failure mess to useradd failure mess
+
+2019-03-11T13:48:03Z
+  want to add subu-type to masteru_subu(),  I imagine there will be static,
+  permanent, and temporary subu types.
+
+
diff --git a/src/5_scratch/subu-rel-get.cli.h b/src/5_scratch/subu-rel-get.cli.h
new file mode 100644 (file)
index 0000000..8b51ff3
--- /dev/null
@@ -0,0 +1,9 @@
+/* \aThis file was automatically generated.  Do not edit! */
+#undef INTERFACE
+#include <sqlite3.h>
+int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username);
+#include <stdbool.h>
+#include <errno.h>
+#define SUBU_ERR_CONFIG_FILE 8
+extern char Config_File[];
+#define SUBU_ERR_ARG_CNT 1
diff --git a/src/5_scratch/subu-rel-put.cli.h b/src/5_scratch/subu-rel-put.cli.h
new file mode 100644 (file)
index 0000000..6ce971b
--- /dev/null
@@ -0,0 +1,8 @@
+/* \aThis file was automatically generated.  Do not edit! */
+#undef INTERFACE
+#include <sqlite3.h>
+int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username);
+#include <stdbool.h>
+#include <errno.h>
+#define SUBU_ERR_CONFIG_FILE 8
+extern char Config_File[];
diff --git a/src/5_scratch/subu-rel-rm.cli.h b/src/5_scratch/subu-rel-rm.cli.h
new file mode 100644 (file)
index 0000000..5973cbe
--- /dev/null
@@ -0,0 +1,8 @@
+/* \aThis file was automatically generated.  Do not edit! */
+#undef INTERFACE
+#include <sqlite3.h>
+int subu_rm_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username);
+#include <stdbool.h>
+#include <errno.h>
+#define SUBU_ERR_CONFIG_FILE 8
+extern char Config_File[];
diff --git a/src/5_scratch/subu-rm-0.cli.h b/src/5_scratch/subu-rm-0.cli.h
new file mode 100644 (file)
index 0000000..56f6cf6
--- /dev/null
@@ -0,0 +1,10 @@
+/* \aThis file was automatically generated.  Do not edit! */
+#undef INTERFACE
+#include <stdbool.h>
+#include <errno.h>
+#include <sqlite3.h>
+void subu_err(char *fname,int err,char *mess);
+int subu_mk_0(char **mess,sqlite3 *db,char *subuname);
+#define SUBU_ERR_CONFIG_FILE 8
+extern char Config_File[];
+#define SUBU_ERR_ARG_CNT 1
diff --git a/src/setuid_root.sh b/src/setuid_root.sh
deleted file mode 100755 (executable)
index bea2d00..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-# must be run under sudo
-# be sure to cat it before running it, better yet just type this in manually
-#
-
-chown root $1 && \
-chmod u+rsx,u-w,go+rx-s-w $1
-
index f459174..de7bcbb 100644 (file)
@@ -22,14 +22,14 @@ currently a unit converted to base 10 will always fit in a 21 bit buffer.
 #include <stdlib.h>
 
 //--------------------------------------------------------------------------------
-int schema(sqlite3 *db, uint max_subu_number){
+int subudb_schema(sqlite3 *db, uint max_subu_number){
   char max_subu_number_string[32];
   uint max_subu_number_string_len = snprintf(max_subu_number_string, 32, "%u", max_subu_number);
   if( max_subu_number_string_len >= 32 ){
     fprintf(stderr, "error exit, max_subu_number too big to deal with\n");
     return ERR_CONFIG_FILE;
   }
-  char sql1[] = "CREATE TABLE Master_Subu(masteru_name TEXT, subuname TEXT, subu_username TEXT); ";
+  char sql1[] = "CREATE TABLE Masteru_Subu(masteru_name TEXT, subuname TEXT, subu_username TEXT); ";
   char sql2[] = "CREATE TABLE Key_Int(key TEXT, value INT); ";
 
   char sql3_1[] = "INSERT INTO Key_Int VALUES( 'max_subu_number', ";
@@ -94,8 +94,9 @@ int subu_number_set(sqlite3 *db, int n){
 
 
 //--------------------------------------------------------------------------------
-int subu_put_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){
-  char *sql = "INSERT INTO Master_Subu VALUES (?1, ?2, ?3);";
+// put relation into Masteru_Subu table
+int subu_Masteru_Subu_put(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){
+  char *sql = "INSERT INTO Masteru_Subu VALUES (?1, ?2, ?3);";
   sqlite3_stmt *stmt;
   sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
   sqlite3_bind_text(stmt, 1, masteru_name, -1, SQLITE_STATIC);
@@ -107,8 +108,8 @@ int subu_put_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char
 }
 
 //--------------------------------------------------------------------------------
-int subu_get_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char **subu_username){
-  char *sql = "SELECT subu_username FROM Master_Subu WHERE masteru_name = ?1 AND subuname = ?2;";
+int subu_Masteru_Subu_get(sqlite3 *db, char *masteru_name, char *subuname, char **subu_username){
+  char *sql = "SELECT subu_username FROM Masteru_Subu WHERE masteru_name = ?1 AND subuname = ?2;";
   size_t sql_len = strlen(sql);
   sqlite3_stmt *stmt;
   int rc;
@@ -130,8 +131,8 @@ int subu_get_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char
 }
 
 //--------------------------------------------------------------------------------
-int subu_rm_masteru_subu(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){
-  char *sql = "DELETE FROM Master_Subu WHERE masteru_name = ?1 AND subuname = ?2 AND subu_username = ?3;";
+int subu_Masteru_Subu_rm(sqlite3 *db, char *masteru_name, char *subuname, char *subu_username){
+  char *sql = "DELETE FROM Masteru_Subu WHERE masteru_name = ?1 AND subuname = ?2 AND subu_username = ?3;";
   size_t sql_len = strlen(sql);
   sqlite3_stmt *stmt;
   int rc;
diff --git a/src/subu-get.cli.c b/src/subu-get.cli.c
deleted file mode 100644 (file)
index 2729db8..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-puts a relation in the masteru/subu table
-
-*/
-#include "subu-put.cli.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char **argv){
-
-  if(argc != 4){
-    fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]);
-    return 1;
-  }
-  char *masteru_name = argv[1];
-  char *subuname = argv[2];
-  char *subu_username = argv[3];
-
-  sqlite3 *db;
-  {
-    int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
-    if( ret != SQLITE_OK ){
-      fprintf(stderr, "error exit, could not open configuration file\n");
-      return ERR_CONFIG_FILE;
-    }}
-
-  int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username);
-  if( ret != SQLITE_DONE ){
-    printf("put failed\n");
-    return 2;
-  }
-  if( sqlite3_close(db) != SQLITE_OK ){
-    fprintf(stderr, "error exit, strange, we could not close the configuration file\n");
-    return ERR_CONFIG_FILE;
-  }    
-  return 0;
-}
index 7e1d808..1dcd7b1 100644 (file)
@@ -11,7 +11,7 @@ int main(){
     fprintf(stderr, "error exit, could not open configuration file \"%s\"\n", Config_File);
     return ERR_CONFIG_FILE;
   }
-  if( schema(db, First_Max_Subu_number) != SQLITE_OK ){
+  if( subudb_schema(db, First_Max_Subu_number) != SQLITE_OK ){
     fprintf(stderr, "error exit, opened config file but could not build scheme\n");
     return ERR_CONFIG_FILE;
   }
diff --git a/src/subu-put.cli.c b/src/subu-put.cli.c
deleted file mode 100644 (file)
index 2729db8..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-puts a relation in the masteru/subu table
-
-*/
-#include "subu-put.cli.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char **argv){
-
-  if(argc != 4){
-    fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]);
-    return 1;
-  }
-  char *masteru_name = argv[1];
-  char *subuname = argv[2];
-  char *subu_username = argv[3];
-
-  sqlite3 *db;
-  {
-    int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
-    if( ret != SQLITE_OK ){
-      fprintf(stderr, "error exit, could not open configuration file\n");
-      return ERR_CONFIG_FILE;
-    }}
-
-  int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username);
-  if( ret != SQLITE_DONE ){
-    printf("put failed\n");
-    return 2;
-  }
-  if( sqlite3_close(db) != SQLITE_OK ){
-    fprintf(stderr, "error exit, strange, we could not close the configuration file\n");
-    return ERR_CONFIG_FILE;
-  }    
-  return 0;
-}
diff --git a/src/subu-rel-get.cli.c b/src/subu-rel-get.cli.c
new file mode 100644 (file)
index 0000000..737080c
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+get the username from the config file
+for testing subu_Masteru_Subu_get_user
+
+*/
+#include "subu-rel-get.cli.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv){
+
+  if(argc != 3){
+    fprintf(stderr, "usage: %s masteru_name subuname\n", argv[0]);
+    return SUBU_ERR_ARG_CNT;
+  }
+
+  int rc;
+  sqlite3 *db;
+  rc = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
+  if( rc != SQLITE_OK ){
+    fprintf(stderr, "could not open configuration file \"%s\"\n", Config_File);
+    return SUBU_ERR_CONFIG_FILE;
+  }
+
+  char *masteru_name = argv[1];
+  char *subuname = argv[2];
+  char *subu_username;
+
+  int ret = subu_Masteru_Subu_get(db, masteru_name, subuname, &subu_username);
+  if( ret != SQLITE_DONE ){
+    fprintf(stderr, "subu_Masteru_Subu_get indicates failure by returning %d\n",ret);
+    fprintf(stderr, "sqlite3 issues message, %s\n", sqlite3_errmsg(db));
+    return SUBU_ERR_CONFIG_FILE;
+  }
+  ret = sqlite3_close(db)
+  if( ret != SQLITE_OK ){
+    fprintf(stderr, "sqlite3_close(db) indicates failure by returning %d\n",ret);
+    fprintf(stderr, "sqlite3 issues message: %s\n", sqlite3_errmsg(db));
+    return SUBU_ERR_CONFIG_FILE;
+  }    
+  return 0;
+}
diff --git a/src/subu-rel-put.cli.c b/src/subu-rel-put.cli.c
new file mode 100644 (file)
index 0000000..c930465
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+puts a relation in the masteru/subu table
+
+*/
+#include "subu-rel-put.cli.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv){
+
+  if(argc != 4){
+    fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]);
+    return 1;
+  }
+  char *masteru_name = argv[1];
+  char *subuname = argv[2];
+  char *subu_username = argv[3];
+
+  sqlite3 *db;
+  {
+    int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
+    if( ret != SQLITE_OK ){
+      fprintf(stderr, "could not open configuration file \"%s\"\n", Config_File);
+      return SUBU_ERR_CONFIG_FILE;
+    }}
+
+  int ret = subu_Masteru_Subu_put(db, masteru_name, subuname, subu_username);
+  if( ret != SQLITE_DONE ){
+    fprintf(stderr, "subu_Masteru_Subu_put indicates failure by returning %d\n",ret);
+    fprintf(stderr, "sqlite3 issues message, %s\n", sqlite3_errmsg(db));
+    printf("put failed\n");
+    return 2;
+  }
+  ret = sqlite3_close(db)
+  if( ret != SQLITE_OK ){
+    fprintf(stderr, "sqlite3_close(db) indicates failure by returning %d\n",ret);
+    fprintf(stderr, "sqlite3 issues message: %s\n", sqlite3_errmsg(db));
+    return SUBU_ERR_CONFIG_FILE;
+  }    
+  return 0;
+}
diff --git a/src/subu-rel-rm.cli.c b/src/subu-rel-rm.cli.c
new file mode 100644 (file)
index 0000000..06eb4e5
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+puts a relation in the masteru/subu table
+
+*/
+#include "subu-rel-rm.cli.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv){
+
+  if(argc != 4){
+    fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]);
+    return 1;
+  }
+  char *masteru_name = argv[1];
+  char *subuname = argv[2];
+  char *subu_username = argv[3];
+
+  sqlite3 *db;
+  {
+    int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
+    if( ret != SQLITE_OK ){
+      fprintf(stderr, "could not open configuration file \"%s\"\n", Config_File);
+      return SUBU_ERR_CONFIG_FILE;
+    }}
+
+  int ret = subu_Masteru_Subu_rm(db, masteru_name, subuname, subu_username);
+  if( ret != SQLITE_DONE ){
+    fprintf(stderr, "subu_Masteru_Subu_rm indicates failure by returning %d\n",ret);
+    fprintf(stderr, "sqlite3 issues message, %s\n", sqlite3_errmsg(db));
+    printf("put failed\n");
+    return 2;
+  }
+  ret = sqlite3_close(db)
+  if( ret != SQLITE_OK ){
+    fprintf(stderr, "sqlite3_close(db) indicates failure by returning %d\n",ret);
+    fprintf(stderr, "sqlite3 issues message: %s\n", sqlite3_errmsg(db));
+    return SUBU_ERR_CONFIG_FILE;
+  }    
+  return 0;
+}
diff --git a/src/subu-rm-0.cli.c b/src/subu-rm-0.cli.c
new file mode 100644 (file)
index 0000000..93c79d3
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+  subu-mk-0 command
+
+*/
+#include "subu-mk-0.cli.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv){
+  char *command = argv[0];
+  if( argc != 2 ){
+    fprintf(stderr, "usage: %s subu", command);
+    return SUBU_ERR_ARG_CNT;
+  }
+  char *subuname = argv[1];
+
+  sqlite3 *db;
+  {
+    int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
+    if( ret != SQLITE_OK ){
+      fprintf(stderr, "error exit, could not open configuration file \"%s\"\n", Config_File);
+      return SUBU_ERR_CONFIG_FILE;
+    }}
+
+  {
+    char *mess;
+    int ret = subu_mk_0(&mess, db, subuname);
+    subu_err("subu_mk_0", ret, mess);
+    free(mess);
+    return ret;
+  }
+}
diff --git a/src/subu-rm.cli.c b/src/subu-rm.cli.c
deleted file mode 100644 (file)
index 2729db8..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-puts a relation in the masteru/subu table
-
-*/
-#include "subu-put.cli.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-int main(int argc, char **argv){
-
-  if(argc != 4){
-    fprintf(stderr, "expected: %s masteru_name subuname subu_username\n", argv[0]);
-    return 1;
-  }
-  char *masteru_name = argv[1];
-  char *subuname = argv[2];
-  char *subu_username = argv[3];
-
-  sqlite3 *db;
-  {
-    int ret = sqlite3_open_v2(Config_File, &db, SQLITE_OPEN_READWRITE, NULL);
-    if( ret != SQLITE_OK ){
-      fprintf(stderr, "error exit, could not open configuration file\n");
-      return ERR_CONFIG_FILE;
-    }}
-
-  int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username);
-  if( ret != SQLITE_DONE ){
-    printf("put failed\n");
-    return 2;
-  }
-  if( sqlite3_close(db) != SQLITE_OK ){
-    fprintf(stderr, "error exit, strange, we could not close the configuration file\n");
-    return ERR_CONFIG_FILE;
-  }    
-  return 0;
-}
index 03c248b..e20fac3 100644 (file)
@@ -393,7 +393,7 @@ int subu_mk_0(char **mess, sqlite3 *db, char *subuname){
   dbprintf("setting the masteru_name, subuname, subu_username relation\n");
   #endif
   {
-    int ret = subu_put_masteru_subu(db, masteru_name, subuname, subu_username);
+    int ret = subu_Masteru_Subu_put(db, masteru_name, subuname, subu_username);
     if( ret != SQLITE_DONE ){
       if(mess)*mess = strdup("insert of masteru subu relation failed");
       RETURN(SUBU_ERR_CONFIG_FILE);
@@ -458,7 +458,7 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){
   dbprintf("looking up subu_username given masteru_name/subuname\n");
   #endif
   {
-    int sgret = subu_get_masteru_subu(db, masteru_name, subuname, &subu_username);
+    int sgret = subu_Masteru_Subu_get(db, masteru_name, subuname, &subu_username);
     if( sgret != SQLITE_DONE ){
       if(mess) *mess = strdup("subu requested for removal not found under this masteru in config file");
       ret = SUBU_ERR_CONFIG_SUBU_NOT_FOUND;
@@ -474,7 +474,7 @@ int subu_rm_0(char **mess, sqlite3 *db, char *subuname){
   dbprintf("remove the masteru_name, subuname, subu_username relation\n");
   #endif
   {
-    int ret = subu_rm_masteru_subu(db, masteru_name, subuname, subu_username);
+    int ret = subu_Masteru_Subu_rm(db, masteru_name, subuname, subu_username);
     if( ret != SQLITE_DONE ){
       if(mess)*mess = strdup("removal of masteru subu relation failed");
       RETURN(SUBU_ERR_CONFIG_FILE);