add argument consumption for better journal messages
This commit is contained in:
parent
171e315d4e
commit
72127b5059
2 changed files with 61 additions and 5 deletions
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
void handle_emotion(FILE *journal, char* msg)
|
void handle_emotion(FILE *journal, char* msg)
|
||||||
{
|
{
|
||||||
// TODO: add newline to msg
|
char formatted[512];
|
||||||
journal_write(journal, msg);
|
sprintf(formatted, "%s\n", msg);
|
||||||
|
journal_write(journal, formatted);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,51 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "emotion.h"
|
#include "emotion.h"
|
||||||
#include "journal.h"
|
#include "journal.h"
|
||||||
|
|
||||||
#define TOPICS 10
|
#define TOPICS 10
|
||||||
|
|
||||||
|
// go through all elements of argv[2] and beyond
|
||||||
|
// and join them together in a string
|
||||||
|
char *extract_handler_msg(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int cur = 0;
|
||||||
|
|
||||||
|
// allocate an empty slot to start with.
|
||||||
|
char *res = malloc(cur);
|
||||||
|
|
||||||
|
// iterate through each argument
|
||||||
|
for(int i = 2; argv[i] != NULL; i++)
|
||||||
|
{
|
||||||
|
// catch it, get its length
|
||||||
|
char *word = argv[i];
|
||||||
|
int wordlen = strlen(word);
|
||||||
|
|
||||||
|
// increase the size of our current things by
|
||||||
|
// arg length + 1 (for a whitespace)
|
||||||
|
cur += wordlen;
|
||||||
|
res = realloc(res, cur + 1);
|
||||||
|
|
||||||
|
// only prepend our whitespace if we AREN'T
|
||||||
|
// at the first argument.
|
||||||
|
if(i != 2)
|
||||||
|
{
|
||||||
|
res[cur - wordlen] = ' ';
|
||||||
|
cur++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// merge our current results with the current arg
|
||||||
|
for(int j = 0; j < wordlen; j++)
|
||||||
|
{
|
||||||
|
res[cur - wordlen + j] = word[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
if(argc < 2)
|
if(argc < 2)
|
||||||
|
@ -15,7 +55,6 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
char *topic = argv[1];
|
char *topic = argv[1];
|
||||||
printf("load topic %s\n", topic);
|
|
||||||
|
|
||||||
const char* topics[TOPICS] = {
|
const char* topics[TOPICS] = {
|
||||||
"emotion"
|
"emotion"
|
||||||
|
@ -25,7 +64,16 @@ int main(int argc, char** argv)
|
||||||
handle_emotion,
|
handle_emotion,
|
||||||
};
|
};
|
||||||
|
|
||||||
for(int i = 0; i < TOPICS; i++)
|
if(strcmp(topic, "list") == 0)
|
||||||
|
{
|
||||||
|
// list all topics
|
||||||
|
for(int i = 0; topics[i] != NULL; i++)
|
||||||
|
printf("%s ", topics[i]);
|
||||||
|
printf("\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; topics[i] != NULL; i++)
|
||||||
{
|
{
|
||||||
const char* cur_topic = topics[i];
|
const char* cur_topic = topics[i];
|
||||||
|
|
||||||
|
@ -34,9 +82,16 @@ int main(int argc, char** argv)
|
||||||
void (*fun_ptr)(FILE*, char*) = handlers[i];
|
void (*fun_ptr)(FILE*, char*) = handlers[i];
|
||||||
|
|
||||||
FILE* journal_file = journal_open(topic);
|
FILE* journal_file = journal_open(topic);
|
||||||
fun_ptr(journal_file, "hello world");
|
|
||||||
|
char *handler_message = extract_handler_msg(argc, argv);
|
||||||
|
printf("'%s'\n", handler_message);
|
||||||
|
|
||||||
|
// the joined args[2] and beyond come as the
|
||||||
|
// second argument
|
||||||
|
fun_ptr(journal_file, handler_message);
|
||||||
journal_close(journal_file);
|
journal_close(journal_file);
|
||||||
|
|
||||||
|
free(handler_message);
|
||||||
printf("done\n");
|
printf("done\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue