--- /dev/null
+#!/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
+
+++ /dev/null
-1. in subu.lib.c append cascading rmdir failure mess to useradd failure mess
-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.
+
+
--- /dev/null
+/* \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
--- /dev/null
+/* \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[];
--- /dev/null
+/* \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[];
--- /dev/null
+/* \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
+++ /dev/null
-#!/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
-
#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', ";
//--------------------------------------------------------------------------------
-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);
}
//--------------------------------------------------------------------------------
-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;
}
//--------------------------------------------------------------------------------
-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;
+++ /dev/null
-/*
-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;
-}
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;
}
+++ /dev/null
-/*
-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;
-}
--- /dev/null
+/*
+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;
+}
--- /dev/null
+/*
+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;
+}
--- /dev/null
+/*
+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;
+}
--- /dev/null
+/*
+ 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;
+ }
+}
+++ /dev/null
-/*
-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;
-}
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);
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;
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);