// late 1980s when my coding style was absolute garbage. It
// works, but we probably should replace most of it.
//
-// Copyright (c) 1987-2022 by the citadel.org team
+// Copyright (c) 1987-2024 by the citadel.org team
//
// This program is open source software. Use, duplication, or disclosure is subject to the GNU General Public License version 3.
extern int rc_display_message_numbers;
extern int rc_force_mail_prompts;
extern int editor_pid;
-extern CtdlIPC *ipc_for_signal_handlers; /* KLUDGE cover your eyes */
+extern CtdlIPC *ipc_for_signal_handlers; // KLUDGE cover your eyes
int num_urls = 0;
char urls[MAXURLS][SIZ];
char imagecmd[SIZ];
-int has_images = 0; /* Current msg has images */
-struct parts *last_message_parts = NULL; /* Parts from last msg */
+int has_images = 0; // Current msg has images
+struct parts *last_message_parts = NULL; // Parts from last msg
void ka_sigcatch(int signum) {
}
-/*
- * server keep-alive version of wait() (needed for external editor)
- */
+// server keep-alive version of wait() (needed for external editor)
pid_t ka_wait(int *kstatus) {
pid_t p;
}
-/*
- * version of system() that uses ka_wait()
- */
+// version of system() that uses ka_wait()
int ka_system(char *shc) {
pid_t childpid;
pid_t waitpid;
}
-/*
- * add a newline to the buffer...
- */
+// add a newline to the buffer...
void add_newline(struct cittext *textlist) {
struct cittext *ptr;
}
-/*
- * add a word to the buffer...
- */
+// add a word to the buffer...
void add_word(struct cittext *textlist, char *wordbuf) {
struct cittext *ptr;
}
-/*
- * begin editing of an opened file pointed to by fp
- */
+// begin editing of an opened file pointed to by fp
void citedit(FILE * fp) {
int a, prev, finished, b, last_space;
int appending = 0;
char wordbuf[MAXWORDBUF];
int rv = 0;
- /* first, load the text into the buffer */
+ // first, load the text into the buffer
fseek(fp, 0L, 0);
textlist = (struct cittext *) malloc(sizeof(struct cittext));
textlist->next = NULL;
prev = a;
}
- /* get text */
+ // get text
finished = 0;
prev = (appending ? 13 : (-1));
strcpy(wordbuf, "");
prev = a;
} while (finished == 0);
- /* write the buffer back to disk */
+ // write the buffer back to disk
fseek(fp, 0L, 0);
for (ptr = textlist; ptr != NULL; ptr = ptr->next) {
fprintf(fp, "%s", ptr->text);
scr_printf("failed to set message buffer: %s\n", strerror(errno));
- /* and deallocate the memory we used */
+ // and deallocate the memory we used
while (textlist != NULL) {
ptr = textlist->next;
free(textlist);
}
-/*
- * Free the struct parts
- */
+// Free the struct parts
void free_parts(struct parts *p) {
struct parts *a_part = p;
}
-/*
- * This is a mini RFC2047 decoder.
- * It only handles strings encoded from UTF-8 as Quoted-printable.
- * We can do this "in place" because the converted string will always be smaller than the source string.
- */
+// This is a mini RFC2047 decoder.
+// It only handles strings encoded from UTF-8 as Quoted-printable.
+// We can do this "in place" because the converted string will always be smaller than the source string.
void mini_2047_decode(char *s) {
if (!s) { // no null strings allowed!
return;
}
-/*
- * Read a message from the server
- */
-int read_message(CtdlIPC * ipc, long num, /* message number */
- int pagin, /* 0 = normal read, 1 = read with pagination, 2 = header */
- FILE * dest /* Destination file, NULL for screen */
- ) {
+// Read a message from the server
+int read_message(CtdlIPC *ipc,
+ long num, // message number
+ int pagin, // 0 = normal read, 1 = read with pagination, 2 = header
+ FILE *dest // Destination file, NULL for screen
+) {
char buf[SIZ];
char now[256];
int format_type = 0;
int fr = 0;
int nhdr = 0;
struct ctdlipcmessage *message = NULL;
- int r; /* IPC response code */
+ int r; // IPC response code
char *converted_text = NULL;
char *lineptr;
char *nextline;
color(BRIGHT_CYAN);
}
- /* View headers only */
+ // View headers only
if (pagin == 2) {
scr_printf("nhdr=%s\nfrom=%s\ntype=%d\nmsgn=%s\n",
message->nhdr ? "yes" : "no", message->author, message->type, message->msgid);
color(BRIGHT_WHITE);
}
- /******* end of header output, start of message text output *******/
+ // ****** end of header output, start of message text output ******
- /*
- * Convert HTML to plain text, formatting for the actual width
- * of the client screen.
- */
+ // Convert HTML to plain text, formatting for the actual width of the client screen.
if (!strcasecmp(message->content_type, "text/html")) {
- converted_text = html_to_ascii(message->text, 0, screenwidth, (enable_color ? 1 : 0));
+ converted_text = html_to_ascii(message->text, 0, screenwidth, (enable_color ? H2A_ANSI : 0));
if (converted_text != NULL) {
free(message->text);
message->text = converted_text;
}
}
- /* Text/plain is a different type */
+ // Text/plain is a different type
if (!strcasecmp(message->content_type, "text/plain")) {
format_type = 1;
}
- /* Render text/x-markdown as plain text */
+ // Render text/x-markdown as plain text
if (!strcasecmp(message->content_type, "text/x-markdown")) {
format_type = 1;
}
- /* Extract URL's */
+ // Extract URL's
static char *urlprefixes[] = {
"http://",
"https://",
"ftp://"
};
int p = 0;
- num_urls = 0; /* Start with a clean slate */
+ num_urls = 0; // Start with a clean slate
for (p = 0; p < (sizeof urlprefixes / sizeof(char *)); ++p) {
searchptr = message->text;
while ((searchptr != NULL) && (num_urls < MAXURLS)) {
}
}
- /*
- * Here we go
- */
+ // Here we go
if (format_type == 0) {
+ // renderer for legacy Citadel format
fr = fmout(screenwidth, NULL, message->text, dest, 1);
}
else {
- /* renderer for text/plain */
-
+ // renderer for text/plain
lineptr = message->text;
-
do {
nextline = strchr(lineptr, '\n');
if (nextline != NULL) {
}
}
- /* Enumerate any attachments */
+ // Enumerate any attachments
if ((pagin == 1) && (message->attachments)) {
struct parts *ptr;
for (ptr = message->attachments; ptr; ptr = ptr->next) {
- if ((!strcasecmp(ptr->disposition, "attachment"))
- || (!strcasecmp(ptr->disposition, "inline"))
- || (!strcasecmp(ptr->disposition, ""))
- ) {
- if ((strcasecmp(ptr->number, message->mime_chosen))
- && (!IsEmptyStr(ptr->mimetype))
- ) {
+ if ( (!strcasecmp(ptr->disposition, "attachment"))
+ || (!strcasecmp(ptr->disposition, "inline"))
+ || (!strcasecmp(ptr->disposition, ""))
+ ) {
+ if ( (strcasecmp(ptr->number, message->mime_chosen))
+ && (!IsEmptyStr(ptr->mimetype))
+ ) {
color(DIM_WHITE);
scr_printf("Part ");
color(BRIGHT_MAGENTA);
}
}
- /* Save the attachments info for later */
+ // Save the attachments info for later
last_message_parts = message->attachments;
- /* Now we're done */
+ // Now we're done
free(message->text);
free(message);
- if (pagin == 1 && !dest)
+ if (pagin == 1 && !dest) {
color(DIM_WHITE);
+ }
stty_ctdl(0);
return (fr);
}
-/*
- * replace string function for the built-in editor
- */
+// replace string function for the built-in editor
void replace_string(char *filename, long int startpos) {
char buf[512];
char srch_str[128];
rv = fwrite((char *) buf, 128, 1, fp);
if (rv < 0) {
scr_printf("failed to replace string: %s\n", strerror(errno));
- break; /*whoopsi! */
+ break; // No replacement happened; break out of the loop
}
strcpy(buf, &buf[128]);
wpos = ftell(fp);
// Function to begin composing a new message
-int client_make_message(CtdlIPC * ipc, char *filename, // temporary file name
- char *recipient, // NULL if it's not mail
- int is_anonymous, int format_type, int mode, char *subject, // buffer to store subject line
- int subject_required) {
+int client_make_message(CtdlIPC *ipc,
+ char *filename, // temporary file name
+ char *recipient, // NULL if it's not mail
+ int is_anonymous,
+ int format_type,
+ int mode,
+ char *subject, // buffer to store subject line
+ int subject_required
+) {
FILE *fp;
int a, b, e_ex_code;
long beg;
}
}
- ME1:switch (mode) {
+ME1: switch (mode) {
case 0:
fp = fopen(filename, "r+");
break;
case 2:
- default: /* allow 2+ modes */
- e_ex_code = 1; /* start with a failed exit code */
+ default: // allow 2+ modes
+ e_ex_code = 1; // start with a failed exit code
stty_ctdl(SB_RESTORE);
editor_pid = fork();
cksum = file_checksum(filename);
}
-/*
- * Make sure there's room in msg_arr[] for at least one more.
- */
+// Make sure there's room in msg_arr[] for at least one more.
void check_msg_arr_size(void) {
if ((num_msgs + 1) > msg_arr_size) {
msg_arr_size += 512;
}
-/*
- * break_big_lines() - break up lines that are >1024 characters
- * otherwise the server will truncate
- */
+// break_big_lines() - break up lines that are >1024 characters, otherwise the server will truncate them.
void break_big_lines(char *msg) {
char *ptr;
char *break_here;
}
-/*
- * entmsg() - edit and create a message
- * returns 0 if message was saved
- */
-int entmsg(CtdlIPC * ipc, int is_reply, /* nonzero if this was a <R>eply command */
- int c, /* mode */
- int masquerade /* prompt for a non-default display name? */
- ) {
+// entmsg() - edit and create a message
+// returns 0 if message was saved
+int entmsg(CtdlIPC *ipc,
+ int is_reply, // nonzero if this was a <R>eply command
+ int c, // mode
+ int masquerade // prompt for a non-default display name?
+) {
char buf[SIZ];
int a, b;
int need_recp = 0;
char subject[SIZ];
struct ctdlipcmessage message;
unsigned long *msgarr = NULL;
- int r; /* IPC response code */
+ int r; // IPC response code
int subject_required = 0;
- /*
- * First, check to see if we have permission to enter a message in
- * this room. The server will return an error code if we can't.
- */
+ // First, check to see if we have permission to enter a message in
+ // this room. The server will return an error code if we can't.
if (entmsg_ok == ENTMSG_OK_YES) {
- /* no problem, go right ahead */
+ // no problem, go right ahead
}
else if (entmsg_ok == ENTMSG_OK_BLOG) {
if (!is_reply) {
strcpy(message.author, "");
strcpy(message.subject, "");
strcpy(message.references, "");
- message.text = ""; /* point to "", changes later */
+ message.text = ""; // point to "", changes later
message.anonymous = 0;
message.type = mode;
}
}
- /* Trim down excessively long lists of thread references. We eliminate the
- * second one in the list so that the thread root remains intact.
- */
+ // Trim down excessively long lists of thread references. We eliminate the
+ // second one in the list so that the thread root remains intact.
int rrtok = num_tokens(reply_references, '|');
int rrlen = strlen(reply_references);
if (((rrtok >= 3) && (rrlen > 900)) || (rrtok > 10)) {
}
snprintf(message.references, sizeof message.references, "%s%s%s",
- reply_references, (IsEmptyStr(reply_references) ? "" : "|"), reply_inreplyto);
+ reply_references, (IsEmptyStr(reply_references) ? "" : "|"), reply_inreplyto
+ );
}
r = CtdlIPCPostMessage(ipc, 0, &subject_required, &message, buf);
return (1);
}
- /* Error code 570 is special. It means that we CAN enter a message
- * in this room, but a recipient needs to be specified.
- */
+ // Error code 570 is special. It means that we CAN enter a message in this room, but a recipient needs to be specified.
need_recp = 0;
if (r / 10 == 57) {
need_recp = 1;
}
- /* If the user is a dumbass, tell them how to type. */
+ // If the user is a dumbass, tell them how to type.
if ((userflags & US_EXPERT) == 0) {
scr_printf("Entering message. Word wrap will give you soft linebreaks. Pressing the\n");
scr_printf("'enter' key will give you a hard linebreak and an indent. Press 'enter' twice\n");
scr_printf("when finished.\n");
}
- /* Handle the selection of a recipient, if necessary. */
+ // Handle the selection of a recipient, if necessary.
strcpy(buf, "");
if (need_recp == 1) {
if (axlevel >= AxProbU) {
message.anonymous = 1;
}
- /* If it's mail, we've got to check the validity of the recipient... */
+ // If it's mail, we've got to check the validity of the recipient...
if (!IsEmptyStr(message.recipient)) {
r = CtdlIPCPostMessage(ipc, 0, &subject_required, &message, buf);
if (r / 100 != 2) {
}
}
- /* Learn the number of the newest message in in the room, so we can
- * tell upon saving whether someone else has posted too.
- */
+ // Learn the number of the newest message in in the room, so we can tell upon saving whether someone else has posted too.
num_msgs = 0;
r = CtdlIPCGetMessages(ipc, LastMessages, 1, NULL, &msgarr, buf);
if (r / 100 != 1) {
for (num_msgs = 0; msgarr[num_msgs]; num_msgs++);
}
- /* Now compose the message... */
+ // Now compose the message...
if (client_make_message(ipc, temp, message.recipient, message.anonymous, 0, c, message.subject, subject_required) != 0) {
if (msgarr)
free(msgarr);
return (2);
}
- /* Reopen the temp file that was created, so we can send it */
+ // Reopen the temp file that was created, so we can send it
fp = fopen(temp, "r");
if (!fp || !(message.text = load_message_from_file(fp))) {
if (fp)
fclose(fp);
- /* Break lines that are >1024 characters, otherwise the server
- * will truncate them.
- */
+ // Break lines that are >1024 characters, otherwise the server will truncate them.
break_big_lines(message.text);
- /* Transmit message to the server */
+ // Transmit message to the server
r = CtdlIPCPostMessage(ipc, 1, NULL, &message, buf);
if (r / 100 != 4) {
scr_printf("%s\n", buf);
return (1);
}
- /* Yes, unlink it now, so it doesn't stick around if we crash */
+ // Yes, unlink it now, so it doesn't stick around if we crash
unlink(temp);
if (num_msgs >= 1)
for (num_msgs = 0; msgarr[num_msgs]; num_msgs++);
}
- /* get new highest message number in room to set lrp for goto... */
+ // get new highest message number in room to set lrp for goto...
maxmsgnum = msgarr[num_msgs - 1];
- /* now see if anyone else has posted in here */
+ // now see if anyone else has posted in here
b = (-1);
for (a = 0; a < num_msgs; ++a) {
if (msgarr[a] > highmsg) {
}
msgarr = NULL;
- /* In the Mail> room, this algorithm always counts one message
- * higher than in public rooms, so we decrement it by one.
- */
+ // In the Mail> room, this algorithm always counts one message higher than in public rooms, so we decrement it by one.
if (need_recp) {
--b;
}
scr_printf("*** %d additional messages have been entered in this room by other users.\n", b);
}
free(message.text);
-
return (0);
}
-/*
- * Do editing on a quoted file
- */
+// Do editing on a quoted file
void process_quote(void) {
FILE *qfile, *tfile;
char buf[128];
int line, qstart, qend;
- // Unlink the second temp file as soon as it's opened, so it'll get
- // deleted even if the program dies
+ // Unlink the second temp file as soon as it's opened, so it'll get deleted even if the program dies
qfile = fopen(temp2, "r");
unlink(temp2);
- /* Display the quotable text with line numbers added */
+ // Display the quotable text with line numbers added
line = 0;
if (fgets(buf, 128, qfile) == NULL) {
- /* we're skipping a line here */
+ // we're skipping a line here
}
while (fgets(buf, 128, qfile) != NULL) {
scr_printf("%3d %s", ++line, buf);
rewind(qfile);
line = 0;
if (fgets(buf, 128, qfile) == NULL) {
- /* we're skipping a line here */
+ // we're skipping a line here
}
tfile = fopen(temp, "w");
while (fgets(buf, 128, qfile) != NULL) {
}
-/*
- * List the URLs which were embedded in the previous message
- */
+// List the URLs which were embedded in the previous message
void list_urls(CtdlIPC * ipc) {
int i;
char cmd[SIZ];
}
-/*
- * Run image viewer in background
- */
+// Run image viewer in background
int do_image_view(const char *filename) {
char cmd[SIZ];
pid_t childpid;
}
-/*
- * View an image attached to a message
- */
+// View an image attached to a message
void image_view(CtdlIPC * ipc, unsigned long msg) {
struct parts *ptr = last_message_parts;
char part[SIZ];
int found = 0;
- /* Run through available parts */
+ // Run through available parts
for (ptr = last_message_parts; ptr; ptr = ptr->next) {
- if ((!strcasecmp(ptr->disposition, "attachment")
- || !strcasecmp(ptr->disposition, "inline"))
- && !strncmp(ptr->mimetype, "image/", 6)) {
+ if ( (!strcasecmp(ptr->disposition, "attachment")
+ || !strcasecmp(ptr->disposition, "inline"))
+ && !strncmp(ptr->mimetype, "image/", 6)
+ ) {
found++;
if (found == 1) {
strcpy(part, ptr->number);
}
while (found > 0) {
- if (found > 1)
+ if (found > 1) {
strprompt("View which part (0 when done)", part, SIZ - 1);
+ }
found = -found;
for (ptr = last_message_parts; ptr; ptr = ptr->next) {
if ((!strcasecmp(ptr->disposition, "attachment")
&& !strcasecmp(ptr->number, part)) {
char tmp[PATH_MAX];
char buf[SIZ];
- void *file = NULL; /* The downloaded file */
+ void *file = NULL; // The downloaded file
int r;
- /* view image */
+ // view image
found = -found;
r = CtdlIPCAttachmentDownload(ipc, msg, ptr->number, &file, progress, buf);
if (r / 100 != 2) {
}
-/*
- * Read the messages in the current room
- */
-void readmsgs(CtdlIPC * ipc, enum MessageList c, // see listing in citadel_ipc.h
- enum MessageDirection rdir, // 1=Forward (-1)=Reverse
- int q // Number of msgs to read (if c==3)
- ) {
+// Read the messages in the current room
+void readmsgs(CtdlIPC *ipc,
+ enum MessageList c, // see listing in citadel_ipc.h
+ enum MessageDirection rdir, // 1=Forward (-1)=Reverse
+ int q // Number of msgs to read (if c==3)
+) {
int a, e, f, g, start;
int savedpos;
int hold_sw = 0;
char targ[ROOMNAMELEN];
char filename[PATH_MAX];
char save_to[PATH_MAX];
- void *attachment = NULL; /* Downloaded attachment */
- FILE *dest = NULL; /* Alternate destination other than screen */
- int r; /* IPC response code */
- static int att_seq = 0; /* Attachment download sequence number */
- int rv = 0; /* silence the stupid warn_unused_result warnings */
+ void *attachment = NULL; // Downloaded attachment
+ FILE *dest = NULL; // Alternate destination other than screen
+ int r; // IPC response code
+ static int att_seq = 0; // Attachment download sequence number
+ int rv = 0; // silence the stupid warn_unused_result warnings
CtdlMakeTempFileName(prtfile, sizeof prtfile);
return;
}
- /* this loop cycles through each message... */
+ // this loop cycles through each message...
start = ((rdir == 1) ? 0 : (num_msgs - 1));
for (a = start; ((a < num_msgs) && (a >= 0)); a = a + rdir) {
while (msg_arr[a] == 0L) {
&& (quotflag == 0)
&& (userflags & US_PAGINATOR)) ? 1 : 0;
- /* If we're doing a quote, set the screenwidth to 72 */
+ // If we're doing a quote, set the screenwidth to 72
if (quotflag) {
hold_sw = screenwidth;
screenwidth = 72;
}
- /* If printing or archiving, set the screenwidth to 80 */
+ // If printing or archiving, set the screenwidth to 80
if (arcflag) {
hold_sw = screenwidth;
screenwidth = 80;
}
- /* clear parts list */
+ // clear parts list
free_parts(last_message_parts);
last_message_parts = NULL;
- /* now read the message... */
+ // now read the message...
e = read_message(ipc, msg_arr[a], pagin, dest);
- /* ...and set the screenwidth back if we have to */
+ // ...and set the screenwidth back if we have to
if ((quotflag) || (arcflag)) {
screenwidth = hold_sw;
}
- RMSGREAD:
+RMSGREAD:
highest_msg_read = msg_arr[a];
if (quotflag) {
fclose(dest);
f = fork();
if (f == 0) {
if (freopen(prtfile, "r", stdin) == NULL) {
- /* we probably should handle the error condition here */
+ // we probably should handle the error condition here
}
stty_ctdl(SB_RESTORE);
ka_system(printcmd);
e = (inkey() & 127);
e = tolower(e);
-/* return key same as <N> */ if (e == 10)
+ if (e == 10) { // return key same as <N>
e = 'n';
+ }
-/* space key same as <N> */ if (e == 32)
+ if (e == 32) { // space key same as <N>
e = 'n';
+ }
-/* del/move for aides only */
- if ((!is_room_aide)
- && ((room_flags & QR_MAILBOX) == 0)
- && ((room_flags2 & QR2_COLLABDEL) == 0)
- ) {
- if ((e == 'd') || (e == 'm'))
+ if ( (!is_room_aide) // delete/move are available only to admins
+ && ((room_flags & QR_MAILBOX) == 0)
+ && ((room_flags2 & QR2_COLLABDEL) == 0)
+ ) {
+ if ((e == 'd') || (e == 'm')) {
e = 0;
+ }
}
-/* print only if available */
- if ((e == 'p') && (IsEmptyStr(printcmd)))
+ if ((e == 'p') && (IsEmptyStr(printcmd))) { // print, if available
e = 0;
+ }
-/* can't file if not allowed */
- if ((e == 'f')
- && (rc_allow_attachments == 0))
+ if ((e == 'f') && (rc_allow_attachments == 0)) { // file attachments, if available
e = 0;
+ }
-/* link only if browser avail*/
- if ((e == 'u')
- && (IsEmptyStr(rc_url_cmd)))
+ if ((e == 'u') && (IsEmptyStr(rc_url_cmd))) { // display urls, if a browser is available
e = 0;
- if ((e == 'i')
- && (IsEmptyStr(imagecmd) || !has_images))
+ }
+
+ if ((e == 'i') && (IsEmptyStr(imagecmd) || !has_images)) { // display images, if available
e = 0;
+ }
+
} while ((e != 'a') && (e != 'n') && (e != 's')
&& (e != 'd') && (e != 'm') && (e != 'p')
&& (e != 'q') && (e != 'b') && (e != 'h')
&& (e != 'r') && (e != 'f') && (e != '?')
&& (e != 'u') && (e != 'c') && (e != 'y')
- && (e != 'i') && (e != 'o'));
+ && (e != 'i') && (e != 'o')
+ );
switch (e) {
case 's':
scr_printf("Stop");
else
scr_printf("\n");
}
- DONE_QUOTING:switch (e) {
+DONE_QUOTING: switch (e) {
case '?':
scr_printf("Options available here:\n"
" ? Help (prints this message)\n"
else {
goto RMSGREAD;
}
- if (r / 100 != 2) /* r will be init'ed, FIXME */
- goto RMSGREAD; /* the logic here sucks */
+ if (r / 100 != 2) { // r will be initialized. The logic here sucks.
+ goto RMSGREAD;
+ }
break;
case 'o':
case 'f':
}
else {
extract_token(filename, cmd, 2, '|', sizeof filename);
- /*
- * Part 1 won't have a filename; use the
- * subject of the message instead. IO
- */
+ // Part 1 won't have a filename; use the subject of the message instead. --IO
if (IsEmptyStr(filename)) {
strcpy(filename, reply_subject);
}
- if (e == 'o') { /* open attachment */
+ if (e == 'o') { // open attachment
mkdir(tempdir, 0700);
snprintf(save_to, sizeof save_to, "%s/%04x.%s", tempdir, ++att_seq, filename);
save_buffer(attachment, extract_unsigned_long(cmd, 0), save_to);
snprintf(cmd, sizeof cmd, rc_open_cmd, save_to);
rv = system(cmd);
- if (rv != 0)
+ if (rv != 0) {
scr_printf("failed to save %s Reason %d\n", cmd, rv);
+ }
}
- else { /* save attachment to disk */
+ else { // save attachment to disk
destination_directory(save_to, filename);
save_buffer(attachment, extract_unsigned_long(cmd, 0), save_to);
}
} /* end read routine */
-/*
- * View and edit a system message
- */
+// View and edit a system message
void edit_system_message(CtdlIPC * ipc, char *which_message) {
char desc[SIZ];
char read_cmd[SIZ];
}
-/*
- * Loads the contents of a file into memory. Caller must free the allocated memory.
- */
-char *load_message_from_file(FILE * src) {
+// Loads the contents of a file into memory. Caller must free the allocated memory.
+char *load_message_from_file(FILE *src) {
size_t i;
size_t got = 0;
char *dest = NULL;
rewind(src);
dest = (char *) calloc(1, i + 1);
- if (!dest)
+ if (!dest) {
return NULL;
+ }
while (got < i) {
size_t g;
g = fread(dest + got, 1, i - got, src);
got += g;
if (g < i - got) {
- /* Interrupted system call, keep going */
- if (errno == EINTR)
- continue;
- /* At this point we have either EOF or error */
+ if (errno == EINTR) {
+ continue; // Interrupted system call, keep going
+ }
+ // At this point we have either EOF or error
i = got;
break;
}