9
9
#include <time.h>
10
10
#include <unistd.h>
11
11
12
- #define VERSION "0.1.2"
13
-
14
12
#define SEQUENCE "printf \"\
15
13
\\033]4;0;#$(echo $color00)\\033\\ \
16
14
\\033]4;1;#$(echo $color01)\\033\\ \
@@ -57,40 +55,33 @@ static char *mode = "dark"; /* selected mode string */
57
55
static char * sval = NULL ; /* selected palette string */
58
56
59
57
static void
60
- find_palettes (void )
61
- {
62
- if (access ("/usr/share/kfc/palettes" , F_OK ) == 0 )
63
- {
58
+ find_palettes (void ) {
59
+ if (access ("/usr/share/kfc/palettes" , F_OK ) == 0 ) {
64
60
seq = "/usr/share/kfc/palettes" ;
65
61
}
66
- else if (access ("palettes" , F_OK ) == 0 )
67
- {
62
+ else if (access ("palettes" , F_OK ) == 0 ) {
68
63
seq = "palettes" ;
69
64
}
70
- else
71
- {
65
+ else {
72
66
fprintf (stderr , "Palette source directory not found\n" );
73
67
exit (1 );
74
68
}
75
69
}
76
70
77
71
static void
78
- select_palette (char * sel )
79
- {
72
+ select_palette (char * sel ) {
80
73
char * evar , * eval , * line ;
81
74
FILE * fp = fopen (sel , "r" );
82
75
size_t len = 255 ;
83
76
84
77
line = malloc (sizeof (char ) * len );
85
78
86
- if (fp == NULL )
87
- {
79
+ if (fp == NULL ) {
88
80
fprintf (stderr , "Selected palette does not exist\n" );
89
81
exit (1 );
90
82
}
91
83
92
- while (fgets (line , len , fp ) != NULL )
93
- {
84
+ while (fgets (line , len , fp ) != NULL ) {
94
85
evar = strtok (line , "=" );
95
86
eval = strtok (NULL , "=" );
96
87
setenv (evar , eval , 1 );
@@ -106,53 +97,41 @@ select_palette(char *sel)
106
97
}
107
98
108
99
static void
109
- list_palette (char * sel )
110
- {
100
+ list_palette (char * sel ) {
111
101
struct dirent * * de ;
112
102
int n = scandir (sel , & de , NULL , alphasort );
113
103
114
- while (n -- )
115
- {
116
- if (de [n ]-> d_type == 8 )
117
- {
118
- printf ("%s/%s\n" , mode , de [n ]-> d_name );
119
- }
104
+ while (n -- ) {
105
+ if (de [n ]-> d_type == 8 ) printf ("%s/%s\n" , mode , de [n ]-> d_name );
120
106
}
121
107
122
108
free (de );
123
109
}
124
110
125
111
static void
126
- random_palette (char * sel )
127
- {
112
+ random_palette (char * sel ) {
128
113
struct dirent * * de ;
129
114
int n = scandir (sel , & de , NULL , alphasort );
130
115
131
116
srand (time (0 ));
132
117
int i = (rand () % (n - 0 + 1 )) + 0 ;
133
118
134
- while (n -- )
135
- {
136
- if (i == n )
137
- {
138
- sval = de [n ]-> d_name ;
139
- }
119
+ while (n -- ) {
120
+ if (i == n ) sval = de [n ]-> d_name ;
140
121
}
141
122
142
123
free (de );
143
124
}
144
125
145
126
static void
146
- print_palette (void )
147
- {
127
+ print_palette (void ) {
148
128
FILE * fp = fopen (conf , "r" );
149
129
size_t len = 255 ;
150
130
char * line ;
151
131
152
132
line = malloc (sizeof (char ) * len );
153
133
154
- if (fp == NULL )
155
- {
134
+ if (fp == NULL ) {
156
135
fprintf (stderr , "No palette set or config file missing\n" );
157
136
exit (1 );
158
137
}
@@ -165,48 +144,26 @@ print_palette(void)
165
144
printf (PALETTE );
166
145
}
167
146
168
- static void
169
- usage (void )
170
- {
171
- fprintf (stderr , "\
172
- usage: kfc [-L] [-r|-s palette] [-l|-p|-v]\n \
173
- -L Set light themes (modifier for -s/-r)\n \
174
- -r Select a random palette (dark theme by default)\n \
175
- -s palette Select a palette (dark theme by default)\n \
176
- -l List all palettes (dark themes by default)\n \
177
- -p Print current palette\n \
178
- -v Show version information\n" );
179
- exit (1 );
180
- }
181
-
182
147
int
183
- main (int argc , char * * argv )
184
- {
185
- extern char * optarg ;
186
- extern int optind , optopt ;
148
+ main (int argc , char * * argv ) {
187
149
int cval ;
188
- int rflag = 0 ;
189
- int lflag = 0 ;
190
- int pflag = 0 ;
150
+ int rflag = 0 , lflag = 0 , pflag = 0 ;
191
151
size_t len ;
192
152
char * sel , * tmp ;
193
153
194
- if (argc == 1 )
195
- {
154
+ if (argc == 1 ) {
196
155
fprintf (stderr , "No argument(s) provided\n" );
197
- exit ( 1 ) ;
156
+ return 1 ;
198
157
}
199
158
200
159
tmp = getenv ("XDG_CONFIG_HOME" );
201
160
202
- if (tmp != NULL )
203
- {
161
+ if (tmp != NULL ) {
204
162
len = strlen (tmp ) + sizeof ("/kfc/current" );
205
163
conf = malloc (sizeof (char ) * len );
206
164
snprintf (conf , len , "%s" , tmp );
207
165
}
208
- else
209
- {
166
+ else {
210
167
puts ("XDG_CONFIG_HOME is not defined. Defaulting to HOME/.config" );
211
168
tmp = getenv ("HOME" );
212
169
len = strlen (tmp ) + sizeof ("/.config/kfc/current" );
@@ -216,66 +173,44 @@ main(int argc, char **argv)
216
173
217
174
strcat (conf , "/kfc" );
218
175
219
- if (mkdir (conf , 0777 ) == 0 )
220
- {
176
+ if (mkdir (conf , 0777 ) == 0 ) {
221
177
puts ("Created 'kfc' directory in XDG_CONFIG_HOME" );
222
178
}
223
179
224
180
strcat (conf , "/current" );
225
181
find_palettes ();
226
182
227
- while ((cval = getopt (argc , argv , "rlLpvs:" )) != -1 )
228
- {
229
- switch (cval )
230
- {
231
- case 'v' :
232
- puts (VERSION );
233
- break ;
234
- case 'L' :
235
- mode = "light" ;
236
- break ;
237
- case 'l' :
238
- lflag ++ ;
239
- break ;
240
- case 'r' :
241
- rflag ++ ;
242
- break ;
183
+ while ((cval = getopt (argc , argv , "rlLpvs:" )) != -1 ) {
184
+ switch (cval ) {
185
+ case 'v' : puts ("kfc 0.1.2" ); break ;
186
+ case 'L' : mode = "light" ; break ;
187
+ case 'l' : lflag ++ ; break ;
188
+ case 'r' : rflag ++ ; break ;
189
+ case 'p' : pflag ++ ; break ;
243
190
case 's' :
244
- if (rflag )
245
- {
246
- fprintf (stderr , "Cannot specify -r with -s\n" );
247
- usage ();
248
- }
249
- sval = optarg ;
250
- break ;
251
- case 'p' :
252
- pflag ++ ;
253
- break ;
254
- case ':' :
255
- fprintf (stderr , "Option -%c requires an operand\n" , optopt );
256
- usage ();
257
- break ;
258
- case '?' :
259
- fprintf (stderr , "Unrecognized option: -%c\n" , optopt );
260
- usage ();
261
- break ;
191
+ if (rflag ) {
192
+ fprintf (stderr , "Cannot specify -r with -s\n" );
193
+ return 1 ;
194
+ }
195
+ sval = optarg ;
196
+ break ;
197
+ case '?' : return 1 ;
262
198
}
263
199
}
264
200
265
201
len = strlen (seq )
266
202
+ sizeof ("/" )
267
203
+ strlen (mode )
268
204
+ (sval ? strlen (sval ) + 1 : 0 );
205
+
269
206
sel = malloc (sizeof (char ) * len );
270
207
271
- if (lflag )
272
- {
208
+ if (lflag ) {
273
209
snprintf (sel , len , "%s/%s" , seq , mode );
274
210
list_palette (sel );
275
211
}
276
212
277
- if (rflag )
278
- {
213
+ if (rflag ) {
279
214
snprintf (sel , len , "%s/%s" , seq , mode );
280
215
random_palette (sel );
281
216
len = strlen (sel )
@@ -284,8 +219,7 @@ main(int argc, char **argv)
284
219
sel = (char * )realloc (sel , sizeof (char ) * len );
285
220
}
286
221
287
- if (sval )
288
- {
222
+ if (sval ) {
289
223
snprintf (sel , len , "%s/%s/%s" , seq , mode , sval );
290
224
select_palette (sel );
291
225
}
0 commit comments