2023-08-02 11:58:18 -04:00
|
|
|
/* parse.c
|
|
|
|
|
|
|
|
Probotic is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License version 3 only as
|
|
|
|
published by the Free Software Foundation.
|
|
|
|
|
|
|
|
Probotic is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License version 3 for more details.
|
|
|
|
|
|
|
|
The above copyright notice, this permission notice and the word
|
|
|
|
"NIGGER" shall be included in all copies or substantial portions
|
|
|
|
of the Software.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
version 3 + NIGGER along with Probotic.
|
|
|
|
|
|
|
|
*/
|
2023-08-02 10:44:10 -04:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
2023-08-02 11:48:30 -04:00
|
|
|
#include <string.h>
|
2023-08-02 10:44:10 -04:00
|
|
|
|
2023-08-02 11:48:30 -04:00
|
|
|
#include "parse.h"
|
2023-08-02 11:09:34 -04:00
|
|
|
#include "utils.h"
|
|
|
|
|
|
|
|
/* possibly globalize creds so that we can ensure by using
|
|
|
|
atexit that it is always cleansed? */
|
|
|
|
|
2023-08-02 11:48:30 -04:00
|
|
|
/* these are closer described as 'setters', no? */
|
|
|
|
|
|
|
|
int parse_remind(char const * arg)
|
|
|
|
{
|
|
|
|
(void) arg;
|
|
|
|
ERRMSG("not implemented");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int parse_repo(char const * arg)
|
|
|
|
{
|
|
|
|
(void) arg;
|
|
|
|
ERRMSG("not implemented");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
2023-08-02 10:44:10 -04:00
|
|
|
parse_creds(creds_t * creds,
|
|
|
|
char const * creds_file)
|
|
|
|
{
|
2023-08-02 11:09:34 -04:00
|
|
|
FILE * stream;
|
|
|
|
size_t nread = 0;
|
|
|
|
|
|
|
|
creds->username = NULL;
|
|
|
|
creds->password = NULL;
|
|
|
|
|
|
|
|
stream = fopen(creds_file, "r");
|
|
|
|
if (stream == NULL)
|
|
|
|
{ PERROR(PROGN); }
|
|
|
|
|
|
|
|
if (getline(&(creds->username), &nread, stream) < 1)
|
|
|
|
{
|
|
|
|
ERRMSG("Cannot get username");
|
|
|
|
goto fail;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (getline(&(creds->password), &nread, stream) < 1)
|
|
|
|
{
|
|
|
|
ERRMSG("Cannot get password");
|
|
|
|
goto fail;
|
|
|
|
}
|
|
|
|
|
|
|
|
fclose(stream);
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
// Releasing everything in cause of a failure
|
2023-08-02 10:44:10 -04:00
|
|
|
fail:
|
2023-08-02 11:09:34 -04:00
|
|
|
fclose(stream);
|
|
|
|
clean_creds(creds);
|
|
|
|
return 1;
|
2023-08-02 10:44:10 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
clean_creds(creds_t * creds)
|
|
|
|
{
|
2023-08-02 11:09:34 -04:00
|
|
|
/* Should we memset these? */
|
|
|
|
free(creds->username);
|
|
|
|
creds->username = NULL;
|
2023-08-02 10:44:10 -04:00
|
|
|
|
2023-08-02 11:09:34 -04:00
|
|
|
free(creds->password);
|
|
|
|
creds->password = NULL;
|
|
|
|
}
|