commit - 0def60137ea9725f82107f0d14b9d8079b715b8c
commit + cc748a8cf76a92029baf25b4f9ab66426b8442a1
blob - 1514894de84610d0e3fc810d81b228a6e52bfcfb
blob + 24b8dd6a465c028ca471bc03bc03691ba4580738
--- rover.c
+++ rover.c
#include <sys/wait.h> /* waitpid() */
#include <signal.h> /* struct sigaction, sigaction() */
#include <errno.h>
+#include <stdarg.h>
#include <curses.h>
#include "config.h"
/* Show a message on the status bar. */
static void
-message(const char *msg, Color color)
+message(Color color, char *fmt, ...)
{
int len, pos;
+ va_list args;
- len = strlen(msg);
+ va_start(args, fmt);
+ vsprintf(BUF1, fmt, args);
+ va_end(args);
+ len = strlen(BUF1);
pos = (STATUSPOS - len) / 2;
attr_on(A_BOLD, NULL);
color_set(color, NULL);
- mvaddstr(LINES - 1, pos, msg);
+ mvaddstr(LINES - 1, pos, BUF1);
color_set(DEFAULT, NULL);
attr_off(A_BOLD, NULL);
}
{
int i, j;
- message("Loading...", CYAN);
+ message(CYAN, "Loading...");
refresh();
if (reset) ESEL = SCROLL = 0;
chdir(CWD);
char path[PATH_MAX];
clear_message();
- message("Processing...", CYAN);
+ message(CYAN, "Processing...");
refresh();
for (i = 0; i < rover.marks.bulk; i++)
if (rover.marks.entries[i]) {
}
reload();
if (!rover.marks.nentries)
- message("Done.", GREEN);
+ message(GREEN, "Done.");
else
- message("Some errors occured.", RED);
+ message(RED, "Some errors occured.");
}
/* Wrappers for file operations. */
} else if (!strcmp(key, RVK_CD_DOWN)) {
if (!rover.nfiles || !S_ISDIR(EMODE(ESEL))) continue;
if (chdir(ENAME(ESEL)) == -1) {
- message("Access denied.", RED);
+ message(RED, "Access denied.");
continue;
}
strcat(CWD, ENAME(ESEL));
try_to_sel(INPUT);
update_view();
} else
- message("File already exists.", RED);
+ message(RED, "File already exists.");
}
} else if (!strcmp(key, RVK_NEW_DIR)) {
int ok = 0;
try_to_sel(INPUT);
update_view();
} else
- message("File already exists.", RED);
+ message(RED, "File already exists.");
}
} else if (!strcmp(key, RVK_RENAME)) {
int ok = 0;
try_to_sel(INPUT);
update_view();
} else
- message("File already exists.", RED);
+ message(RED, "File already exists.");
}
} else if (!strcmp(key, RVK_DELETE)) {
if (rover.nfiles) {
- message("Delete selected entry? (Y to confirm)", YELLOW);
+ message(YELLOW, "Delete selected entry? (Y to confirm)");
if (rover_getch() == 'Y') {
const char *name = ENAME(ESEL);
int ret = S_ISDIR(EMODE(ESEL)) ? deldir(name) : delfile(name);
reload();
if (ret)
- message("Could not delete entry.", RED);
+ message(RED, "Could not delete entry.");
} else
clear_message();
} else
- message("No entry selected for deletion.", RED);
+ message(RED, "No entry selected for deletion.");
} else if (!strcmp(key, RVK_TG_MARK)) {
if (MARKED(ESEL))
del_mark(&rover.marks, ENAME(ESEL));
update_view();
} else if (!strcmp(key, RVK_MARK_DELETE)) {
if (rover.marks.nentries) {
- message("Delete marked entries? (Y to confirm)", YELLOW);
+ message(YELLOW, "Delete marked entries? (Y to confirm)");
if (rover_getch() == 'Y')
process_marked(NULL, delfile, deldir);
else
clear_message();
} else
- message("No entries marked for deletion.", RED);
+ message(RED, "No entries marked for deletion.");
} else if (!strcmp(key, RVK_MARK_COPY)) {
if (rover.marks.nentries)
process_marked(adddir, cpyfile, NULL);
else
- message("No entries marked for copying.", RED);
+ message(RED, "No entries marked for copying.");
} else if (!strcmp(key, RVK_MARK_MOVE)) {
if (rover.marks.nentries)
process_marked(adddir, movfile, deldir);
else
- message("No entries marked for moving.", RED);
+ message(RED, "No entries marked for moving.");
}
}
if (rover.nfiles)