mirror of
https://github.com/tomasriveral/NoteWrapper.git
synced 2026-08-12 02:18:38 +02:00
Corrected some warnings
This commit is contained in:
+9
-6
@@ -54,14 +54,17 @@ int main(int argc, char *argv[]) {
|
|||||||
// loads and read the config file
|
// loads and read the config file
|
||||||
//gets the size
|
//gets the size
|
||||||
fseek(f, 0, SEEK_END);
|
fseek(f, 0, SEEK_END);
|
||||||
long size = ftell(f);
|
size_t size = ftell(f);
|
||||||
rewind(f);
|
rewind(f);
|
||||||
//gets the data
|
//gets the data
|
||||||
char *data = malloc(size+1);
|
char *data = malloc(size+1);
|
||||||
error(!data, "program", "malloc failed allocating memory for the variable data.");
|
error(!data, "program", "malloc failed allocating memory for the variable data.");
|
||||||
size_t readBytes = fread(data, 1, size, f); // 1 --> size of each item
|
size_t readBytes = fread(data, 1, size, f); // 1 --> size of each item
|
||||||
|
|
||||||
if (readBytes!=size) {free(data);fclose(f);}
|
if (readBytes!=size) {
|
||||||
|
free(data);
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
error(readBytes!=size, "program", "Failed to read config file (%s) (%zu bytes read, expected %ld)", configPath, readBytes, size);
|
error(readBytes!=size, "program", "Failed to read config file (%s) (%zu bytes read, expected %ld)", configPath, readBytes, size);
|
||||||
data[size] = '\0';
|
data[size] = '\0';
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@@ -277,7 +280,7 @@ int main(int argc, char *argv[]) {
|
|||||||
// select a vault
|
// select a vault
|
||||||
char *vaultSelected = NULL;
|
char *vaultSelected = NULL;
|
||||||
|
|
||||||
size_t vaultsCount = 0;
|
int vaultsCount = 0;
|
||||||
char **vaultsArray = getVaultsFromDirectory(notesDirectoryString, &vaultsCount, shouldDebug);
|
char **vaultsArray = getVaultsFromDirectory(notesDirectoryString, &vaultsCount, shouldDebug);
|
||||||
|
|
||||||
// bypass if -v or --vault is set
|
// bypass if -v or --vault is set
|
||||||
@@ -298,7 +301,7 @@ int main(int argc, char *argv[]) {
|
|||||||
qsort(vaultsArray, vaultsCount, sizeof(const char *), compareString); // sorts the vaults alphabetically
|
qsort(vaultsArray, vaultsCount, sizeof(const char *), compareString); // sorts the vaults alphabetically
|
||||||
debug("Available vaults");
|
debug("Available vaults");
|
||||||
if (shouldDebug) {
|
if (shouldDebug) {
|
||||||
for (size_t i = 0; i < vaultsCount; i++) {
|
for (int i = 0; i < vaultsCount; i++) {
|
||||||
altDebug("%s\n", vaultsArray[i]);
|
altDebug("%s\n", vaultsArray[i]);
|
||||||
}
|
}
|
||||||
altDebug("└ ------------------------------\n");
|
altDebug("└ ------------------------------\n");
|
||||||
@@ -344,7 +347,7 @@ note_selection:
|
|||||||
filesCount = filesCount + journalCount;
|
filesCount = filesCount + journalCount;
|
||||||
debug("Available notes and journals:");
|
debug("Available notes and journals:");
|
||||||
if (shouldDebug) {
|
if (shouldDebug) {
|
||||||
for (size_t i = 0; i < filesCount; i++) {
|
for (int i = 0; i < filesCount; i++) {
|
||||||
altDebug("%s\n", filesArray[i]);
|
altDebug("%s\n", filesArray[i]);
|
||||||
}
|
}
|
||||||
altDebug("└------------------------------\n");
|
altDebug("└------------------------------\n");
|
||||||
@@ -413,7 +416,7 @@ note_creation:
|
|||||||
char pathToRMRF[PATH_MAX];
|
char pathToRMRF[PATH_MAX];
|
||||||
sprintf(pathToRMRF, "%s/%s", notesDirectoryString, vaultSelected);
|
sprintf(pathToRMRF, "%s/%s", notesDirectoryString, vaultSelected);
|
||||||
debug("Removed the directory: %s", pathToRMRF);
|
debug("Removed the directory: %s", pathToRMRF);
|
||||||
rmrf(pathToRMRF);
|
rmrf(pathToRMRF, shouldDebug);
|
||||||
shouldChangeVault = 1;
|
shouldChangeVault = 1;
|
||||||
}
|
}
|
||||||
} else if (strcmp(noteSelected,"Quit (Ctrl+C)") == 0) {
|
} else if (strcmp(noteSelected,"Quit (Ctrl+C)") == 0) {
|
||||||
|
|||||||
+5
-5
@@ -10,7 +10,7 @@ char **getJournalsFromVault(char *pathToVault, char *vault, char *journalRegex,
|
|||||||
DIR *vaultDirectory = opendir(tempPath);
|
DIR *vaultDirectory = opendir(tempPath);
|
||||||
error(vaultDirectory==NULL, "program", "Could not open directory %s", tempPath);
|
error(vaultDirectory==NULL, "program", "Could not open directory %s", tempPath);
|
||||||
char **journalsArray = NULL; // will contain all the notes
|
char **journalsArray = NULL; // will contain all the notes
|
||||||
size_t journalsCount = 0; // we need to count how many notes there is to always readjust how many memory we alloc
|
int journalsCount = 0; // we need to count how many notes there is to always readjust how many memory we alloc
|
||||||
|
|
||||||
// https://stackoverflow.com/a/1085120 for regex code
|
// https://stackoverflow.com/a/1085120 for regex code
|
||||||
regex_t regex;
|
regex_t regex;
|
||||||
@@ -57,7 +57,7 @@ char** getNotesFromVault(char *pathToVault, char *vault, char *journalRegex, int
|
|||||||
DIR *vaultDirectory = opendir(tempPath);
|
DIR *vaultDirectory = opendir(tempPath);
|
||||||
error(vaultDirectory==NULL, "program", "Could not open directory %s", tempPath);
|
error(vaultDirectory==NULL, "program", "Could not open directory %s", tempPath);
|
||||||
char **notesArray = NULL; // will contain all the notes
|
char **notesArray = NULL; // will contain all the notes
|
||||||
size_t notesCount = 0; // we need to count how many notes there is to always readjust how many memory we alloc
|
int notesCount = 0; // we need to count how many notes there is to always readjust how many memory we alloc
|
||||||
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
||||||
// for readdir()
|
// for readdir()
|
||||||
debug("┌------------------------------\nDetected Files and dirs from the vault:");
|
debug("┌------------------------------\nDetected Files and dirs from the vault:");
|
||||||
@@ -91,7 +91,7 @@ char** getNotesFromVault(char *pathToVault, char *vault, char *journalRegex, int
|
|||||||
return notesArray;
|
return notesArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
char **getVaultsFromDirectory(char *dirString, size_t *count, int shouldDebug) {
|
char **getVaultsFromDirectory(char *dirString, int *count, int shouldDebug) {
|
||||||
// (TODO LATER) it might be a good idea to check if these directories exist
|
// (TODO LATER) it might be a good idea to check if these directories exist
|
||||||
// (TODO LATER) expand ~ as it does not work with opendir()
|
// (TODO LATER) expand ~ as it does not work with opendir()
|
||||||
// this function is inputed a path to a directory (which comes usually from the config file) and outpus all the suitable directories (so not the hidden ones) which will serve as separate vaults for notes
|
// this function is inputed a path to a directory (which comes usually from the config file) and outpus all the suitable directories (so not the hidden ones) which will serve as separate vaults for notes
|
||||||
@@ -101,7 +101,7 @@ char **getVaultsFromDirectory(char *dirString, size_t *count, int shouldDebug) {
|
|||||||
DIR *vaultsDirectory = opendir(dirString);
|
DIR *vaultsDirectory = opendir(dirString);
|
||||||
error(vaultsDirectory==NULL, "program", "Could not open directory %s", dirString);
|
error(vaultsDirectory==NULL, "program", "Could not open directory %s", dirString);
|
||||||
char **dirsArray = NULL; // will contain all the dirs/vaults
|
char **dirsArray = NULL; // will contain all the dirs/vaults
|
||||||
size_t dirsCount = 0; // we need to count how many dirs there is to always readjust how many memory we alloc
|
int dirsCount = 0; // we need to count how many dirs there is to always readjust how many memory we alloc
|
||||||
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
||||||
// for readdir()
|
// for readdir()
|
||||||
debug("┌------------------------------\n Detected files and dirs from the directory:");
|
debug("┌------------------------------\n Detected files and dirs from the directory:");
|
||||||
@@ -166,7 +166,7 @@ char *updateJournal(char *path, char *journal, char *timeFormat, int shouldDebug
|
|||||||
snprintf(createEntryMessage, PATH_MAX, "Create new entry for the journal %s", journal);
|
snprintf(createEntryMessage, PATH_MAX, "Create new entry for the journal %s", journal);
|
||||||
entryArray[0] = createEntryMessage;
|
entryArray[0] = createEntryMessage;
|
||||||
entryArray[1] = "Open random entry";
|
entryArray[1] = "Open random entry";
|
||||||
size_t entryCount = extraOptions; // we need to count how many dirs there is to always readjust how many memory we alloc
|
int entryCount = extraOptions; // we need to count how many dirs there is to always readjust how many memory we alloc
|
||||||
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
// Refer https://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html
|
||||||
// for readdir()
|
// for readdir()
|
||||||
debug("┌------------------------------\n Detected files and dirs from %s:", path);
|
debug("┌------------------------------\n Detected files and dirs from %s:", path);
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ char **getJournalsFromVault(char *pathToVault, char *vault, char *journalRegex,
|
|||||||
// journalRegex is the regex code for the journals. If a note matches this code, it is treated as a journal and it is not outputed from this function.
|
// journalRegex is the regex code for the journals. If a note matches this code, it is treated as a journal and it is not outputed from this function.
|
||||||
char **getNotesFromVault(char *pathToVault, char *vault, char *journalRegex, int *count, int shouldDebug);
|
char **getNotesFromVault(char *pathToVault, char *vault, char *journalRegex, int *count, int shouldDebug);
|
||||||
// this function is inputed a path to a directory (which comes usually from the config file) and outpus all the suitable directories (so not the hidden ones) which will serve as separate vaults for notes.
|
// this function is inputed a path to a directory (which comes usually from the config file) and outpus all the suitable directories (so not the hidden ones) which will serve as separate vaults for notes.
|
||||||
char **getVaultsFromDirectory(char *dirString, size_t *count, int shouldDebug);
|
char **getVaultsFromDirectory(char *dirString, int *count, int shouldDebug);
|
||||||
// path is the path to the file.
|
// path is the path to the file.
|
||||||
// journal is the name of the file.
|
// journal is the name of the file.
|
||||||
// handles both type of journal (divided and unified).
|
// handles both type of journal (divided and unified).
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ char *createNewNote(char dirToVault[PATH_MAX], char *vaultFromDir, int bypass, c
|
|||||||
return fileName;
|
return fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* ncursesSelect(char **options, char *optionsText, size_t optionsNumber, size_t extraOptionsNumber, char *bottomText, char *middleText, char *topText, int shouldDebug) {
|
char* ncursesSelect(char **options, char *optionsText, int optionsNumber, int extraOptionsNumber, char *bottomText, char *middleText, char *topText, int shouldDebug) {
|
||||||
int highlight = 0; //curently highlighted option
|
int highlight = 0; //curently highlighted option
|
||||||
int key;
|
int key;
|
||||||
|
|
||||||
@@ -221,5 +221,7 @@ char* ncursesSelect(char **options, char *optionsText, size_t optionsNumber, siz
|
|||||||
}
|
}
|
||||||
end_loop:
|
end_loop:
|
||||||
endwin(); // end ncurses mode
|
endwin(); // end ncurses mode
|
||||||
|
fflush(stderr);
|
||||||
|
debug("Selected option: %s", options[highlight]);
|
||||||
return options[highlight];
|
return options[highlight];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,5 +36,5 @@ middleText (usally \n) is printed between options and extraOptions.
|
|||||||
bottomText is printed bellow.
|
bottomText is printed bellow.
|
||||||
topText and middle must be exactly one line. If you want empty lines use " " and not "".
|
topText and middle must be exactly one line. If you want empty lines use " " and not "".
|
||||||
returns the selected option. */
|
returns the selected option. */
|
||||||
char* ncursesSelect(char **options, char *optionsText, size_t optionsNumber, size_t extraOptionsNumber, char *bottomText, char *middleText, char *topText, int debug);
|
char* ncursesSelect(char **options, char *optionsText, int optionsNumber, int extraOptionsNumber, char *bottomText, char *middleText, char *topText, int debug);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+12
-9
@@ -102,8 +102,8 @@ static void ensureDir(const char *path, const int shouldDebug) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void initAppFilesAndDirs(const char *home, const int shouldDebug) {
|
void initAppFilesAndDirs(const char *home, const int shouldDebug) {
|
||||||
char config_dir[512];
|
char config_dir[PATH_MAX];
|
||||||
char cache_dir[512];
|
char cache_dir[PATH_MAX];
|
||||||
|
|
||||||
snprintf(config_dir, sizeof(config_dir),
|
snprintf(config_dir, sizeof(config_dir),
|
||||||
"%s/.config/notewrapper", home);
|
"%s/.config/notewrapper", home);
|
||||||
@@ -114,9 +114,8 @@ void initAppFilesAndDirs(const char *home, const int shouldDebug) {
|
|||||||
ensureDir(config_dir, shouldDebug);
|
ensureDir(config_dir, shouldDebug);
|
||||||
ensureDir(cache_dir, shouldDebug);
|
ensureDir(cache_dir, shouldDebug);
|
||||||
|
|
||||||
char config_file[512];
|
char config_file[PATH_MAX+12];
|
||||||
snprintf(config_file, sizeof(config_file),
|
snprintf(config_file, sizeof(config_file), "%s/config.json", config_dir);
|
||||||
"%s/config.json", config_dir);
|
|
||||||
|
|
||||||
FILE *f = fopen(config_file, "r");
|
FILE *f = fopen(config_file, "r");
|
||||||
if (f) {
|
if (f) {
|
||||||
@@ -288,7 +287,7 @@ void appendToFile(const char *path, const char *string, const int shouldDebug) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void sanitize(char *string) {
|
void sanitize(char *string) {
|
||||||
for (int i = 0; i < strlen(string); i++) {
|
for (size_t i = 0; i < strlen(string); i++) {
|
||||||
if ((!isalnum((unsigned char)string[i]) && strchr("/\\:*?\"\'<>\n\r\t", string[i])) || ((i == 0 || i == 1) && string[i] == '.')) { // replace unwanted chars by '_'. '.' is replaced if it is only the first two chars
|
if ((!isalnum((unsigned char)string[i]) && strchr("/\\:*?\"\'<>\n\r\t", string[i])) || ((i == 0 || i == 1) && string[i] == '.')) { // replace unwanted chars by '_'. '.' is replaced if it is only the first two chars
|
||||||
// (TODO LATER fixe case where it "*.*", "..." and so on
|
// (TODO LATER fixe case where it "*.*", "..." and so on
|
||||||
string[i] = '_';
|
string[i] = '_';
|
||||||
@@ -302,15 +301,19 @@ void sanitize(char *string) {
|
|||||||
// so it walks the file tree and deletes it's content before removing the directory
|
// so it walks the file tree and deletes it's content before removing the directory
|
||||||
// (TODO LATER) this seems safe, but it's maybe a good idea to add some checks to not remove something it should not remove
|
// (TODO LATER) this seems safe, but it's maybe a good idea to add some checks to not remove something it should not remove
|
||||||
int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) {
|
int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) {
|
||||||
|
(void)sb;
|
||||||
|
(void)typeflag;
|
||||||
|
(void)ftwbuf;
|
||||||
|
|
||||||
int shouldDebug = 1; //normally shouldDebug should be passed to the function. However, it's to difficult here and the best it to set it to 1.
|
int shouldDebug = 1; //normally shouldDebug should be passed to the function. However, it's to difficult here and the best it to set it to 1.
|
||||||
int rv = remove(fpath);
|
int rv = remove(fpath);
|
||||||
error(rv, "program", "remove() failed to delete %s", fpath);
|
error(rv, "program", "remove() failed to delete %s", fpath);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rmrf(char *path) {
|
int rmrf(char *path, int shouldDebug) {
|
||||||
// (TODO LATER) Check if it not a root directory or something like this
|
error(strcmp(path, "/") == 0, "program", "Refusing to delete root directory");
|
||||||
return nftw(path, unlink_cb, 64, FTW_DEPTH | FTW_PHYS);
|
return nftw(path, unlink_cb, 64, FTW_DEPTH | FTW_PHYS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -17,6 +17,7 @@
|
|||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <ftw.h>
|
||||||
#define BUFFER_SIZE 256 //standard buffer size.
|
#define BUFFER_SIZE 256 //standard buffer size.
|
||||||
// the three supported values are "daily" "weekly" and "monthly" (for months we use the avarage lenght of a month in a non leap year). All values were calculated on my loyal TI-30 ECO RS
|
// the three supported values are "daily" "weekly" and "monthly" (for months we use the avarage lenght of a month in a non leap year). All values were calculated on my loyal TI-30 ECO RS
|
||||||
#define DAILY 86400
|
#define DAILY 86400
|
||||||
@@ -65,7 +66,7 @@ void appendToFile(const char *path, const char *string, const int shouldDebug);
|
|||||||
void sanitize(char *string);
|
void sanitize(char *string);
|
||||||
//from https://stackoverflow.com/a/5467788.
|
//from https://stackoverflow.com/a/5467788.
|
||||||
//deletes an entire directory. Use with parsimony and carefullness.
|
//deletes an entire directory. Use with parsimony and carefullness.
|
||||||
int rmrf(char *path);
|
int rmrf(char *path, int shouldDebug);
|
||||||
// Inputs are the path to the file, the editor to open and some rendering option.
|
// Inputs are the path to the file, the editor to open and some rendering option.
|
||||||
// render: if we render the .md file with Vivify.
|
// render: if we render the .md file with Vivify.
|
||||||
// shouldJumpToEndOfFile: if we put the cursor at the end of the file when opening.
|
// shouldJumpToEndOfFile: if we put the cursor at the end of the file when opening.
|
||||||
|
|||||||
Reference in New Issue
Block a user