Added Taglines for Message Conferences

This commit is contained in:
Andrew Pamment 2016-03-27 13:17:25 +10:00
parent c5f357a9be
commit 9ca3609b7c
4 changed files with 29 additions and 6 deletions

5
bbs.c
View File

@ -213,6 +213,8 @@ static int mail_area_handler(void* user, const char* section, const char* name,
} else { } else {
mc->realnames = 0; mc->realnames = 0;
} }
} else if (strcasecmp(name, "tagline")) {
mc->tagline = strdup(value);
} }
} else if (strcasecmp(section, "network") == 0) { } else if (strcasecmp(section, "network") == 0) {
if (strcasecmp(name, "type") == 0) { if (strcasecmp(name, "type") == 0) {
@ -293,6 +295,8 @@ static int handler(void* user, const char* section, const char* name,
conf->irc_port = atoi(value); conf->irc_port = atoi(value);
} else if (strcasecmp(name, "irc channel") == 0) { } else if (strcasecmp(name, "irc channel") == 0) {
conf->irc_channel = strdup(value); conf->irc_channel = strdup(value);
} else if (strcasecmp(name, "default tagline") == 0) {
conf->default_tagline = strdup(value);
} }
} else if (strcasecmp(section, "paths") == 0){ } else if (strcasecmp(section, "paths") == 0){
if (strcasecmp(name, "ansi path") == 0) { if (strcasecmp(name, "ansi path") == 0) {
@ -312,6 +316,7 @@ static int handler(void* user, const char* section, const char* name,
conf->mail_conferences[conf->mail_conference_count] = (struct mail_conference *)malloc(sizeof(struct mail_conference)); conf->mail_conferences[conf->mail_conference_count] = (struct mail_conference *)malloc(sizeof(struct mail_conference));
conf->mail_conferences[conf->mail_conference_count]->name = strdup(name); conf->mail_conferences[conf->mail_conference_count]->name = strdup(name);
conf->mail_conferences[conf->mail_conference_count]->path = strdup(value); conf->mail_conferences[conf->mail_conference_count]->path = strdup(value);
conf->mail_conferences[conf->mail_conference_count]->tagline = NULL;
conf->mail_conferences[conf->mail_conference_count]->mail_area_count = 0; conf->mail_conferences[conf->mail_conference_count]->mail_area_count = 0;
conf->mail_conference_count++; conf->mail_conference_count++;
} else if (strcasecmp(section, "file directories") == 0) { } else if (strcasecmp(section, "file directories") == 0) {

2
bbs.h
View File

@ -49,6 +49,7 @@ struct mail_area {
struct mail_conference { struct mail_conference {
char *name; char *name;
char *path; char *path;
char *tagline;
int networked; int networked;
int nettype; int nettype;
int realnames; int realnames;
@ -80,6 +81,7 @@ struct bbs_config {
char *ansi_path; char *ansi_path;
char *bbs_path; char *bbs_path;
char *email_path; char *email_path;
char *default_tagline;
char *irc_server; char *irc_server;
int irc_port; int irc_port;

View File

@ -6,6 +6,7 @@ New User Level = 10
IRC Server = localhost IRC Server = localhost
IRC Port = 6667 IRC Port = 6667
IRC Channel = #bbs IRC Channel = #bbs
Default Tagline = Brought to you by Another Magicka BBS!
[paths] [paths]
ANSI Path = /home/andrew/MagickaBBS/ansis ANSI Path = /home/andrew/MagickaBBS/ansis

View File

@ -28,7 +28,7 @@ s_JamBase *open_jam_base(char *path) {
return jb; return jb;
} }
char *editor(int socket, char *quote, char *from) { char *editor(int socket, struct user_record *user, char *quote, char *from) {
int lines = 0; int lines = 0;
char buffer[256]; char buffer[256];
char linebuffer[80]; char linebuffer[80];
@ -43,6 +43,7 @@ char *editor(int socket, char *quote, char *from) {
int lineat=0; int lineat=0;
int qfrom,qto; int qfrom,qto;
int z; int z;
char *tagline;
if (quote != NULL) { if (quote != NULL) {
for (i=0;i<strlen(quote);i++) { for (i=0;i<strlen(quote);i++) {
@ -78,6 +79,16 @@ char *editor(int socket, char *quote, char *from) {
size += strlen(content[i]) + 1; size += strlen(content[i]) + 1;
} }
size ++; size ++;
if (conf.mail_conferences[user->cur_mail_conf]->tagline != NULL) {
tagline = conf.mail_conferences[user->cur_mail_conf]->tagline;
} else {
tagline = conf.default_tagline;
}
size += 7;
size += strlen(tagline);
msg = (char *)malloc(size); msg = (char *)malloc(size);
memset(msg, 0, size); memset(msg, 0, size);
for (i=0;i<lines;i++) { for (i=0;i<lines;i++) {
@ -85,6 +96,10 @@ char *editor(int socket, char *quote, char *from) {
strcat(msg, "\r"); strcat(msg, "\r");
free(content[i]); free(content[i]);
} }
strcat(msg, "\r---\r");
strcat(msg, tagline);
strcat(msg, "\r");
free(content); free(content);
if (quote != NULL) { if (quote != NULL) {
for (i=0;i<quotelines;i++) { for (i=0;i<quotelines;i++) {
@ -392,7 +407,7 @@ void read_message(int socket, struct user_record *user, int mailno) {
} }
to = (char *)malloc(strlen(buffer) + 1); to = (char *)malloc(strlen(buffer) + 1);
strcpy(to, buffer); strcpy(to, buffer);
replybody = editor(socket, body, to); replybody = editor(socket, user, body, to);
if (replybody != NULL) { if (replybody != NULL) {
jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path); jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
if (!jb) { if (!jb) {
@ -624,7 +639,7 @@ int mail_menu(int socket, struct user_record *user) {
subject = strdup(buffer); subject = strdup(buffer);
// post a message // post a message
msg = editor(socket, NULL, NULL); msg = editor(socket, user, NULL, NULL);
if (msg != NULL) { if (msg != NULL) {
jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path); jb = open_jam_base(conf.mail_conferences[user->cur_mail_conf]->mail_areas[user->cur_mail_area]->path);
@ -980,7 +995,7 @@ int mail_menu(int socket, struct user_record *user) {
subject = strdup(buffer); subject = strdup(buffer);
// post a message // post a message
msg = editor(socket, NULL, NULL); msg = editor(socket, user, NULL, NULL);
if (msg != NULL) { if (msg != NULL) {
jb = open_jam_base(conf.email_path); jb = open_jam_base(conf.email_path);
@ -1217,7 +1232,7 @@ int mail_menu(int socket, struct user_record *user) {
to = (char *)malloc(strlen(buffer) + 1); to = (char *)malloc(strlen(buffer) + 1);
strcpy(to, buffer); strcpy(to, buffer);
replybody = editor(socket, body, to); replybody = editor(socket, user, body, to);
if (replybody != NULL) { if (replybody != NULL) {
jb = open_jam_base(conf.email_path); jb = open_jam_base(conf.email_path);