1
+ #include <sys/stat.h>
1
2
#include <stdio.h>
2
3
#include <stdlib.h>
3
4
#include <unistd.h>
@@ -26,19 +27,18 @@ find_palettes(void)
26
27
int
27
28
select_palette (void )
28
29
{
29
- size_t len = 255 ;
30
- char * line = malloc (sizeof (char ) * len );
30
+ // size_t len = 255;
31
+ p .len = 255 ;
32
+ char * line = malloc (sizeof (char ) * p .len );
31
33
char * envvar , * envval ;
32
- FILE * fp = fopen (p .SEL , "r" );
33
- setenv ("LC_ALL" , "C" , 1 );
34
- system ("exec 6>&1 >/dev/null" );
35
- while (fgets (line , len , fp ) != NULL )
34
+ p .fp = fopen (p .SEL , "r" );
35
+ while (fgets (line , p .len , p .fp ) != NULL )
36
36
{
37
37
envvar = strtok (line , "=" );
38
38
envval = strtok (NULL , "=" );
39
39
setenv (envvar , envval , 1 );
40
40
}
41
- fclose (fp );
41
+ fclose (p . fp );
42
42
free (line );
43
43
sprintf (p .PRI , "printf %%b \"\
44
44
\\e]4;0;#$(echo $color00)\\e\\ \
@@ -60,12 +60,16 @@ select_palette(void)
60
60
\\e]10;#$(echo $foreground)\\e\\ \
61
61
\\e]11;#$(echo $background)\\e\\ \
62
62
\\e]12;#$(echo $cursor)\\e\\ \"" , p .CONF );
63
- sprintf (p .CLI , "%s > %s/sequence" , p .PRI , p .CONF );
64
- system (p .CLI );
65
- sprintf (p .CLI , "%s > %s/current" , p .PRI , p .CONF );
66
- system (p .CLI );
63
+ p .fp = fopen (p .CSEQ , "w" );
64
+ fprintf (p .fp , "%s" , p .PRI );
65
+ fclose (p .fp );
66
+ p .fp = fopen (p .CCUR , "w" );
67
+ fprintf (p .fp , "%s" , p .SEL );
68
+ fclose (p .fp );
67
69
sprintf (p .CLI , "%s > /dev/fd/0" , p .PRI );
68
70
system (p .CLI );
71
+ sprintf (p .CLI , "%s > /dev/pts/0" , p .PRI );
72
+ system (p .CLI );
69
73
return 0 ;
70
74
}
71
75
79
83
list_palette (void )
80
84
{
81
85
struct dirent * de ;
82
- DIR * dr = opendir (p .SEL );
86
+ p . dr = opendir (p .SEL );
83
87
84
- if (dr == NULL )
88
+ if (p . dr == NULL )
85
89
{
86
90
printf ("Could not open directory" );
87
91
return 1 ;
88
92
}
89
93
90
- while ((de = readdir (dr )) != NULL )
94
+ while ((de = readdir (p . dr )) != NULL )
91
95
{
92
96
printf ("->%s\n" , de -> d_name );
93
97
}
94
98
95
- closedir (dr );
99
+ closedir (p . dr );
96
100
return 0 ;
97
101
}
98
102
99
103
int
100
104
print_palette (void )
101
105
{
102
- FILE * fp = fopen (p .CONF , "r" );
103
- fclose (fp );
104
- printf ("\nUsing: %s\n" , p .SEL );
106
+ char str [60 ];
107
+ p .fp = fopen (p .CCUR , "r" );
108
+ fgets (str , 60 , p .fp );
109
+ printf ("\nUsing: %s\n" , str );
110
+ fclose (p .fp );
105
111
for (int i = 0 ; i < 15 ; i ++ )
106
112
{
107
113
printf ("\e[48;5;%dm \e[0m" , i );
@@ -127,7 +133,13 @@ main(int argc, char **argv)
127
133
exit (2 );
128
134
}
129
135
strcat (p .CONF , "/kc" );
130
-
136
+ if ( mkdir (p .CONF ,0777 ) == 0 )
137
+ {
138
+ printf ("Created 'kc' directory in XDG_CONFIG_HOME." );
139
+ }
140
+ sprintf (p .CCUR , "%s/current" , p .CONF );
141
+ sprintf (p .CSEQ , "%s/sequence" , p .CONF );
142
+
131
143
if (find_palettes () == 1 )
132
144
{
133
145
fprintf (stderr , "Palette directory not found\n" );
0 commit comments