This repository has been archived on 2024-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
probotic/src/parse.c

94 lines
1.9 KiB
C
Raw Normal View History

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? */
DELC int
parse_remind(char const * arg)
2023-08-02 11:48:30 -04:00
{
(void) arg;
ERRMSG("not implemented");
return 0;
}
DELC int
parse_repo(char const * arg)
2023-08-02 11:48:30 -04:00
{
(void) arg;
ERRMSG("not implemented");
return 0;
}
DELC 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;
}