New free.h

This commit is contained in:
Emil 2023-08-03 22:13:25 -06:00
parent ae3bbf2a91
commit 2b02e93462
6 changed files with 57 additions and 39 deletions

View File

@ -17,7 +17,7 @@ See doc/api.md for detailed information about this interface.
First, you'll want specify your server and channel as well as bot username
and a password. This can be done either with command-line options or in a
specified credentials file.
specified credentials file. See docs/cli.txt for more information on that.
This'll require a few libraries:
libircclient-dev libsqlite3-dev build-essentials

9
docs/cli.txt Normal file
View File

@ -0,0 +1,9 @@
-server SERVER - The desired server.
-port PORT - Places port number.
-username USERNAME - Specifies the username.
-password PASSW0RD - Sets a password.
-auth FILE - Uses an authorization file.
-help - A message likewise.
-version - Currently nothing.
options before are overwritten, and after take precedence.

22
include/free.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef FREE_H_
#define FREE(obj) \
do \
{ \
free(obj); \
(obj) = NULL; \
} while (0)
#define FULL_FREE(obj) \
do \
{ \
if ((obj)) \
{ \
memset((obj), '\0', strlen((obj))); \
FREE((obj)); \
} \
} while (0)
#define FREE_H_
#endif

View File

@ -3,10 +3,10 @@
#include <sqlite3.h>
#include "stmt.h"
#include "irccolors.h"
#include "error.h"
#include "irc.h"
#include "irccolors.h"
#include "stmt.h"
#define DBFILE "test.sqlite"

View File

@ -21,11 +21,12 @@
#include <stdio.h>
#include <stdlib.h>
#include "error.h"
#include "irc.h"
#include "api.h"
#include "error.h"
#include "free.h"
#include "irc.h"
#define CREDS_FILE "./creds.txt"
#define VERSION_STRING "0.0"
#define EQOP(var,val,off) \
do \
@ -42,20 +43,25 @@
void
help(void)
{
fprintf(stderr,
PROGN ": usage\n"
"-server SERVER\n"
"-port PORT\n"
"-username USERNAME\n"
"-password PASSW0RD\n"
"-auth FILE\n");
ERRMSG(PROGN ": usage\n"
"-server SERVER - Sets server\n"
"-port PORT - Sets port\n"
"-username USERNAME - Sets username\n"
"-password PASSW0RD - Sets password\n"
"-auth FILE - Use auth file");
}
void
version(void)
{
ERRMSG(PROGN ": " VERSION_STRING);
}
int
main (int argc,
char ** argv)
{
char const * authfile = CREDS_FILE;
char const * authfile = NULL;
if (argc > 1)
{
char * arg;
@ -73,15 +79,15 @@ main (int argc,
if (argc < 2)
{ goto nop; }
if (strcmp(arg, "server") == 0)
{ creds.server = argv[1]; }
{ FREE(creds.server); creds.server = argv[1]; }
else if (strcmp(arg, "port") == 0)
{ creds.port = atoi(argv[1]); }
else if (strcmp(arg, "channel") == 0)
{ creds.channel = argv[1]; }
{ FREE(creds.channel);creds.channel = argv[1]; }
else if (strcmp(arg, "username") == 0)
{ creds.username = argv[1]; }
{ FREE(creds.username); creds.username = argv[1]; }
else if (strcmp(arg, "password") == 0)
{ creds.password = argv[1]; }
{ FREE(creds.password); creds.password = argv[1]; }
else if (strcmp(arg, "auth") == 0)
{
authfile = argv[1];

View File

@ -21,9 +21,10 @@
#include <stdlib.h>
#include <string.h>
#include "parse.h"
#include "error.h"
#include "free.h"
#include "help.h"
#include "parse.h"
#define PARAMS_COUNT 5
@ -262,23 +263,6 @@ is_admin(char const * user)
return 0;
}
#define FREE(obj) \
do \
{ \
free(obj); \
(obj) = NULL; \
} while (0)
#define FULL_FREE(obj) \
do \
{ \
if ((obj)) \
{ \
memset((obj), '\0', strlen((obj))); \
FREE((obj)); \
} \
} while (0)
DECL void
clean_admin_list()
{
@ -305,6 +289,3 @@ creds_free_rest(void)
FULL_FREE(creds.channel);
FULL_FREE(creds.server);
}
#undef FREE
#undef FULL_FREE