Rework get_line and add marked file color
This commit is contained in:
parent
fe24d3ffbc
commit
548572536b
3 changed files with 23 additions and 23 deletions
18
ccc.c
18
ccc.c
|
@ -624,7 +624,7 @@ void add_file_stat(char *filename, char *path, int ftype)
|
||||||
}
|
}
|
||||||
|
|
||||||
int type;
|
int type;
|
||||||
char *icon_str = memalloc(8);
|
char icon_str[5];
|
||||||
|
|
||||||
filename[strlen(filename)] = '\0';
|
filename[strlen(filename)] = '\0';
|
||||||
/* handle file without extension
|
/* handle file without extension
|
||||||
|
@ -639,14 +639,14 @@ void add_file_stat(char *filename, char *path, int ftype)
|
||||||
if (!ext_icon)
|
if (!ext_icon)
|
||||||
memcpy(icon_str, "", 4);
|
memcpy(icon_str, "", 4);
|
||||||
else
|
else
|
||||||
memcpy(icon_str, ext_icon->icon, 5);
|
memcpy(icon_str, ext_icon->icon, 4);
|
||||||
|
|
||||||
int color = DEF_COLOR;
|
int color = DEF_COLOR;
|
||||||
|
|
||||||
if (S_ISDIR(file_stat.st_mode)) {
|
if (S_ISDIR(file_stat.st_mode)) {
|
||||||
type = DRY; /* dir */
|
type = DRY; /* dir */
|
||||||
color = DIR_COLOR;
|
color = DIR_COLOR;
|
||||||
memcpy(icon_str, "", 5);
|
memcpy(icon_str, "", 4);
|
||||||
} else if (S_ISREG(file_stat.st_mode)) {
|
} else if (S_ISREG(file_stat.st_mode)) {
|
||||||
type = REG; /* regular file */
|
type = REG; /* regular file */
|
||||||
color = REG_COLOR;
|
color = REG_COLOR;
|
||||||
|
@ -723,16 +723,16 @@ void add_file_stat(char *filename, char *path, int ftype)
|
||||||
mode_str[7] = (file_stat.st_mode & S_IROTH) ? 'r' : '-';
|
mode_str[7] = (file_stat.st_mode & S_IROTH) ? 'r' : '-';
|
||||||
mode_str[8] = (file_stat.st_mode & S_IWOTH) ? 'w' : '-';
|
mode_str[8] = (file_stat.st_mode & S_IWOTH) ? 'w' : '-';
|
||||||
mode_str[9] = (file_stat.st_mode & S_IXOTH) ? 'x' : '-';
|
mode_str[9] = (file_stat.st_mode & S_IXOTH) ? 'x' : '-';
|
||||||
mode_str[10] = '\0';
|
mode_str[10] = 0;
|
||||||
|
|
||||||
if (mode_str[0] == '-' && (mode_str[3] == 'x' || mode_str[6] == 'x' || mode_str[9] == 'x')) {
|
if (mode_str[0] == '-' && (mode_str[3] == 'x' || mode_str[6] == 'x' || mode_str[9] == 'x')) {
|
||||||
color = EXE_COLOR;
|
color = EXE_COLOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* mode_str(11) + time(17) + size_size + 2 spaces + 1 null */
|
/* mode_str + time(17) + size_size + 2 spaces + 1 null */
|
||||||
size_t stat_size = 11 + time_size + size_size + 3;
|
size_t stat_size = 11 + 17 + size_size + 3;
|
||||||
char *total_stat = memalloc(stat_size);
|
char *total_stat = memalloc(stat_size);
|
||||||
snprintf(total_stat, stat_size, "%s %s %-*s", mode_str, time, size_size, size);
|
sprintf(total_stat, "%s %s %-*s", mode_str, time, size_size, size);
|
||||||
|
|
||||||
/* DIR if color is blue */
|
/* DIR if color is blue */
|
||||||
if (color == 34)
|
if (color == 34)
|
||||||
|
@ -799,8 +799,8 @@ void list_files(void)
|
||||||
/* check is file marked for action */
|
/* check is file marked for action */
|
||||||
int is_marked = arraylist_search(marked, files->items[i].path, 0) != -1;
|
int is_marked = arraylist_search(marked, files->items[i].path, 0) != -1;
|
||||||
move_cursor(i + 1, 1);
|
move_cursor(i + 1, 1);
|
||||||
if (is_marked) color = 32;
|
if (is_marked) color = MAR_COLOR;
|
||||||
bprintf("\033[30m\033[%dm%s\033[0m\n",
|
bprintf("\033[30m\033[%dm%s\033[m\n",
|
||||||
is_selected ? color + 10 : color, line);
|
is_selected ? color + 10 : color, line);
|
||||||
|
|
||||||
free(line);
|
free(line);
|
||||||
|
|
26
file.c
26
file.c
|
@ -23,8 +23,6 @@ void arraylist_free(ArrayList *list)
|
||||||
free(list->items[i].path);
|
free(list->items[i].path);
|
||||||
if (list->items[i].stats != NULL)
|
if (list->items[i].stats != NULL)
|
||||||
free(list->items[i].stats);
|
free(list->items[i].stats);
|
||||||
if (list->items[i].icon != NULL)
|
|
||||||
free(list->items[i].icon);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(list->items);
|
free(list->items);
|
||||||
|
@ -72,7 +70,8 @@ void arraylist_remove(ArrayList *list, long index)
|
||||||
*/
|
*/
|
||||||
void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int type, char *icon, int color, int marked, int force)
|
void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int type, char *icon, int color, int marked, int force)
|
||||||
{
|
{
|
||||||
file new_file = { name, path, type, stats, icon, color };
|
file new_file = { name, path, type, stats, color };
|
||||||
|
strcpy(new_file.icon, icon);
|
||||||
|
|
||||||
if (list->capacity != list->length) {
|
if (list->capacity != list->length) {
|
||||||
if (marked) {
|
if (marked) {
|
||||||
|
@ -106,26 +105,27 @@ void arraylist_add(ArrayList *list, char *name, char *path, char *stats, int typ
|
||||||
*/
|
*/
|
||||||
char *get_line(ArrayList *list, long index, int detail, int icons)
|
char *get_line(ArrayList *list, long index, int detail, int icons)
|
||||||
{
|
{
|
||||||
file file = list->items[index];
|
file f = list->items[index];
|
||||||
|
|
||||||
size_t name_len = strlen(file.name);
|
size_t length = strlen(f.name) + 1;
|
||||||
size_t length;
|
|
||||||
if (detail) {
|
if (detail) {
|
||||||
length = name_len + strlen(file.stats) + 7; /* 4 for icon, 2 for space and 1 for null */
|
length += strlen(f.stats) + 1; /* 1 for space */
|
||||||
} else {
|
}
|
||||||
length = name_len + 6; /* 4 for icon, 1 for space and 1 for null */
|
if (icons) {
|
||||||
|
length += 5; /* 4 for icon, 1 for space */
|
||||||
}
|
}
|
||||||
|
|
||||||
char *line = memalloc(length);
|
char *line = memalloc(length);
|
||||||
|
line[0] = '\0';
|
||||||
if (detail) {
|
if (detail) {
|
||||||
strcat(line, file.stats);
|
strcat(line, f.stats);
|
||||||
strcat(line, " ");
|
strcat(line, " ");
|
||||||
}
|
}
|
||||||
if (icons) {
|
if (icons) {
|
||||||
strcat(line, file.icon);
|
strcat(line, f.icon);
|
||||||
strcat(line, " ");
|
strcat(line, " ");
|
||||||
}
|
}
|
||||||
strcat(line, file.name);
|
strcat(line, f.name);
|
||||||
|
line[length] = '\0';
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
2
file.h
2
file.h
|
@ -18,8 +18,8 @@ typedef struct {
|
||||||
char *path; /* absolute path */
|
char *path; /* absolute path */
|
||||||
int type;
|
int type;
|
||||||
char *stats;
|
char *stats;
|
||||||
char *icon;
|
|
||||||
int color;
|
int color;
|
||||||
|
char icon[5];
|
||||||
} file;
|
} file;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Reference in a new issue