First commit
This commit is contained in:
66
examples/main.c
Normal file
66
examples/main.c
Normal file
@@ -0,0 +1,66 @@
|
||||
/* Reads text from stdio and creates comment using unix fs driver in current directory */
|
||||
/* TODO: add path, displayname as arguments */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "comment.h"
|
||||
#include "driver.h"
|
||||
#include "drivers/unix_fs/unix_fs_driver.h"
|
||||
|
||||
char *
|
||||
get_username()
|
||||
{
|
||||
uid_t uid = geteuid();
|
||||
struct passwd *pw = getpwuid(uid);
|
||||
if (pw) {
|
||||
return pw->pw_name;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, const char *argv[])
|
||||
{
|
||||
const Driver *driver = &unix_fs_driver;
|
||||
char *path = ".";
|
||||
|
||||
char *user_sid = get_username();
|
||||
char *user_displayname = user_sid;
|
||||
int reply_id = 0;
|
||||
|
||||
size_t cur_buf_size = 256;
|
||||
size_t idx = 0;
|
||||
|
||||
char *text = malloc(cur_buf_size);
|
||||
|
||||
int ch;
|
||||
while ((ch = getchar()) != EOF) {
|
||||
if (idx + 1 == cur_buf_size) {
|
||||
cur_buf_size *= 2;
|
||||
text = realloc(text, cur_buf_size);
|
||||
}
|
||||
text[idx++] = ch;
|
||||
}
|
||||
text[idx] = '\0';
|
||||
|
||||
time_t current_time;
|
||||
time(¤t_time);
|
||||
|
||||
UnixFsDriverData driver_data = { path };
|
||||
|
||||
CommentHeader *header = mk_comment_header(reply_id, current_time, strlen(text), user_sid, user_displayname);
|
||||
|
||||
int retval = driver->leave_comment(&driver_data, header, text);
|
||||
free(text);
|
||||
if (retval < 0) {
|
||||
return retval;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user