/* \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);
int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username);
int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username);
-int subu_number_get(sqlite3 *db,char **nsp,char **errmsg);
+int subu_number_set(sqlite3 *db,int n);
+int subu_number_get(sqlite3 *db,int *n);
+int subu_number_next(sqlite3 *db,char **nsp,char **mess);
typedef unsigned int uint;
int schema(sqlite3 *db,uint max_subu_number);
#define ERR_CONFIG_FILE 1
/* \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);
+int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username);
#define ERR_CONFIG_FILE 1
extern char Config_File[];
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 2
+#define SUBU_ERR_ARG_CNT 1
/* \aThis file was automatically generated. Do not edit! */
#undef INTERFACE
#include <sqlite3.h>
-int subu_number_get(sqlite3 *db,char **nsp,char **errmsg);
-#define ERR_CONFIG_FILE 1
+int subu_number_get(sqlite3 *db,int *n);
+int subu_number_set(sqlite3 *db,int n);
+#include <stdbool.h>
+#include <errno.h>
+#define SUBU_ERR_N 14
+#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);
+#define ERR_CONFIG_FILE 1
+extern char Config_File[];
/* \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);
+int subu_get_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char **subu_username);
+#include <stdbool.h>
+#include <errno.h>
+int subu_rm_0(char **mess,sqlite3 *db,char *subuname);
int subu_put_masteru_subu(sqlite3 *db,char *masteru_name,char *subuname,char *subu_username);
#include <sys/types.h>
#include <unistd.h>
#define ERR_DISPATCH -1024
int dispatch_f_euid_egid(char *fname,int(*f)(void *arg),void *f_arg,uid_t euid,gid_t egid);
int dbprintf(const char *format,...);
-#include <stdbool.h>
-#include <errno.h>
int subu_mk_0(char **mess,sqlite3 *db,char *subuname);
extern char Subuland_Extension[];
-int subu_number_get(sqlite3 *db,char **nsp,char **errmsg);
+int subu_number_next(sqlite3 *db,char **nsp,char **mess);
typedef unsigned int uint;
extern uint Subuhome_Perms;
extern char Config_File[];
void subu_err(char *fname,int err,char *mess);
+#define SUBU_ERR_N 14
+#define SUBU_ERR_CONFIG_SUBU_NOT_FOUND 13
+#define SUBU_ERR_FAILED_USERDEL 12
#define SUBU_ERR_FAILED_USERADD 11
#define SUBU_ERR_BUG_SSS 10
#define SUBU_ERR_SUBUHOME_EXISTS 9
#define SUBU_ERR_CONFIG_FILE 8
#define SUBU_ERR_MASTERU_HOMELESS 7
-#define SUBU_ERR_SUBUNAME_MALFORMED 5
-#define SUBU_ERR_RMDIR_SUBUHOME 4
-#define SUBU_ERR_MKDIR_SUBUHOME 3
-#define SUBU_ERR_MALLOC 1
-#define SUBU_ERR_SETUID_ROOT 6
-#define SUBU_ERR_ARG_CNT 2
+#define SUBU_ERR_SUBUNAME_MALFORMED 6
+#define SUBU_ERR_RMDIR_SUBUHOME 5
+#define SUBU_ERR_MKDIR_SUBUHOME 4
+#define SUBU_ERR_MALLOC 3
+#define SUBU_ERR_SETUID_ROOT 2
+#define SUBU_ERR_ARG_CNT 1
+char *userdel_mess(int err);
char *useradd_mess(int err);
#define INTERFACE 0
return rc;
}
int subu_number_get(sqlite3 *db, int *n){
- char *sql = "SELECT value FROM Key_Int WHERE key = 'max_subu_number';"
+ char *sql = "SELECT value FROM Key_Int WHERE key = 'max_subu_number';";
sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
int rc = sqlite3_step(stmt);
return rc;
}
int subu_number_set(sqlite3 *db, int n){
- char *sql = "UPDATE Key_Int SET value = ?1 WHERE key = 'max_subu_number';"
+ char *sql = "UPDATE Key_Int SET value = ?1 WHERE key = 'max_subu_number';";
sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
sqlite3_bind_int(stmt, 1, n);
int rc = sqlite3_step(stmt);
+ sqlite3_finalize(stmt);
return rc;
}
if( rc != SQLITE_OK ) return rc;
sqlite3_bind_text(stmt, 1, masteru_name, -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, subuname, -1, SQLITE_STATIC);
- sqlite3_bind_text(stmt, 3, sub_username, -1, SQLITE_STATIC);
+ sqlite3_bind_text(stmt, 3, subu_username, -1, SQLITE_STATIC);
rc = sqlite3_step(stmt);
sqlite3_finalize(stmt);
return rc;
#include "subu-number.cli.h"
#include <stdio.h>
#include <stdlib.h>
+#include <limits.h>
int main(int argc, char **argv){
// then arg[1] holds a number to set the max to
if(argc == 2){
- long int i = strlol(argc[1], NULL, 10);
+ long int i = strtol(argv[1], NULL, 10);
if( i < 0 ){
fprintf(stderr, "n must be positive\n");
sqlite3_close(db);
}
// read and print the current max
- char *n;
+ int n;
rc = subu_number_get(db, &n);
if( rc == SQLITE_DONE ){
- printf("%s\n", n);
+ printf("%d\n", n);
}else{
sqlite3_close(db);
return SUBU_ERR_CONFIG_FILE;
}
- if( sqlite3_close(db) != SQLITE_OK ){
- fprintf(stderr, "error exit, strange, we could not close the configuration file\n");
+ rc = sqlite3_close(db);
+ if( rc != SQLITE_OK ){
+ fprintf(stderr, "when closing db, %s\n", sqlite3_errmsg(db));
return SUBU_ERR_CONFIG_FILE;
}
return 0;
dbprintf("remove the masteru_name, subuname, subu_username relation\n");
#endif
{
- int ret = subu_rm_masteru_subu(db, masteru_name, subuname, ctxp->subu_username);
+ int ret = subu_rm_masteru_subu(db, masteru_name, subuname, subu_username);
if( ret != SQLITE_DONE ){
- ctxp->err = SUBU_ERR_RM_0_CONFIG_FILE;
- ctxp->aux = "insert of masteru subu relation failed";
- return ctxp;
+ if(mess)*mess = strdup("removal of masteru subu relation failed");
+ RETURN(SUBU_ERR_CONFIG_FILE);
}
}
#ifdef DEBUG
dbprintf("as masteru, removing the directory \"%s\"\n", subuhome);
#endif
- int dispatch_err_rmdir = dispatch_f_euid_egid
+ int dispatch_err = dispatch_f_euid_egid
(
"masteru_rmdir_subuhome",
masteru_rmdir_subuhome,
dbprintf("setting inherited real uid to 0 to accomodate SSS_CACHE UID BUG\n");
#endif
if( setuid(0) == -1 ){
- ret = SUBU_ERR_RM_0_BUG_SSS;
+ ret = SUBU_ERR_BUG_SSS;
RETURN(ret);
}
#endif
}
#ifdef DEBUG
- dbprintf("finished subu-mk-0(%s)\n", subuname);
+ dbprintf("finished subu-rm-0(%s)\n", subuname);
#endif
- ctxp->err = 0;
- return ctxp;
+ RETURN(0);
}
-#endif
+