Add .clang-format

This commit is contained in:
Utkarsh Verma 2022-08-27 09:27:26 +02:00
parent 098184d0c3
commit 647080cbed
No known key found for this signature in database
GPG Key ID: 817656CF818EFCCC
2 changed files with 183 additions and 190 deletions

2
.clang-format Normal file
View File

@ -0,0 +1,2 @@
BasedOnStyle: Google
IndentWidth: 4

61
main.c
View File

@ -15,7 +15,7 @@
{ "echo \"$(" cmd ")\"", interval, signal }
typedef const struct {
const char* command;
const char *command;
const unsigned int interval;
const unsigned int signal;
} Block;
@ -35,7 +35,7 @@ typedef const struct {
#define LEADING_DELIMITER 0
#endif
static Display* dpy;
static Display *dpy;
static int screen;
static Window root;
static unsigned short statusContinue = 1;
@ -48,7 +48,10 @@ static int execLock = 0;
// Longest UTF-8 character is 4 bytes long
static char outputs[LEN(blocks)][CMDLENGTH * 4 + 1 + CLICKABLE_BLOCKS];
static char statusBar[2][LEN(blocks) * (LEN(outputs[0]) - 1) + (LEN(blocks) - 1 + LEADING_DELIMITER) * (LEN(DELIMITER) - 1) + 1];
static char
statusBar[2]
[LEN(blocks) * (LEN(outputs[0]) - 1) +
(LEN(blocks) - 1 + LEADING_DELIMITER) * (LEN(DELIMITER) - 1) + 1];
void (*writeStatus)();
@ -62,15 +65,14 @@ int gcd(int a, int b) {
return a;
}
void closePipe(int* pipe) {
void closePipe(int *pipe) {
close(pipe[0]);
close(pipe[1]);
}
void execBlock(int i, const char* button) {
void execBlock(int i, const char *button) {
// Ensure only one child process exists per block at an instance
if (execLock & 1 << i)
return;
if (execLock & 1 << i) return;
// Lock execution of block until current instance finishes execution
execLock |= 1 << i;
@ -79,20 +81,20 @@ void execBlock(int i, const char* button) {
dup2(pipes[i][1], STDOUT_FILENO);
close(pipes[i][1]);
if (button)
setenv("BLOCK_BUTTON", button, 1);
execl("/bin/sh", "sh", "-c", blocks[i].command, (char*)NULL);
if (button) setenv("BLOCK_BUTTON", button, 1);
execl("/bin/sh", "sh", "-c", blocks[i].command, (char *)NULL);
exit(EXIT_FAILURE);
}
}
void execBlocks(unsigned int time) {
for (int i = 0; i < LEN(blocks); i++)
if (time == 0 || (blocks[i].interval != 0 && time % blocks[i].interval == 0))
if (time == 0 ||
(blocks[i].interval != 0 && time % blocks[i].interval == 0))
execBlock(i, NULL);
}
int getStatus(char* new, char* old) {
int getStatus(char *new, char *old) {
strcpy(old, new);
new[0] = '\0';
@ -109,7 +111,7 @@ int getStatus(char* new, char* old) {
}
void updateBlock(int i) {
char* output = outputs[i];
char *output = outputs[i];
char buffer[LEN(outputs[0]) - CLICKABLE_BLOCKS];
int bytesRead = read(pipes[i][0], buffer, LEN(buffer));
@ -121,8 +123,7 @@ void updateBlock(int i) {
// Skip continuation bytes, if any
char ch = buffer[j];
int skip = 1;
while ((ch & 0xc0) > 0x80)
ch <<= 1, skip++;
while ((ch & 0xc0) > 0x80) ch <<= 1, skip++;
j += skip;
}
@ -131,8 +132,7 @@ void updateBlock(int i) {
buffer[j] = ' ';
// Trim trailing spaces
while (j >= 0 && buffer[j] == ' ')
j--;
while (j >= 0 && buffer[j] == ' ') j--;
buffer[j + 1] = 0;
// Clear the pipe
@ -156,8 +156,7 @@ void updateBlock(int i) {
void debug() {
// Only write out if text has changed
if (!getStatus(statusBar[0], statusBar[1]))
return;
if (!getStatus(statusBar[0], statusBar[1])) return;
write(STDOUT_FILENO, statusBar[0], strlen(statusBar[0]));
write(STDOUT_FILENO, "\n", 1);
@ -165,8 +164,7 @@ void debug() {
int setupX() {
dpy = XOpenDisplay(NULL);
if (!dpy)
return 1;
if (!dpy) return 1;
screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen);
@ -175,8 +173,7 @@ int setupX() {
void setRoot() {
// Only set root if text has changed
if (!getStatus(statusBar[0], statusBar[1]))
return;
if (!getStatus(statusBar[0], statusBar[1])) return;
XStoreName(dpy, root, statusBar[0]);
XFlush(dpy);
@ -211,9 +208,7 @@ void signalHandler() {
}
}
void termHandler() {
statusContinue = 0;
}
void termHandler() { statusContinue = 0; }
void setupSignals() {
sigset_t handledSignals;
@ -232,8 +227,7 @@ void setupSignals() {
epoll_ctl(epollFD, EPOLL_CTL_ADD, signalFD, &event);
// Block all realtime and handled signals
for (int i = SIGRTMIN; i <= SIGRTMAX; i++)
sigaddset(&handledSignals, i);
for (int i = SIGRTMIN; i <= SIGRTMAX; i++) sigaddset(&handledSignals, i);
sigprocmask(SIG_BLOCK, &handledSignals, NULL);
// Handle termination signals
@ -263,8 +257,7 @@ void statusLoop() {
signalHandler();
}
if (eventCount != -1)
writeStatus();
if (eventCount != -1) writeStatus();
}
}
@ -288,7 +281,7 @@ void init() {
setupSignals();
}
int main(const int argc, const char* argv[]) {
int main(const int argc, const char *argv[]) {
if (setupX()) {
fprintf(stderr, "dwmblocks: Failed to open display\n");
return 1;
@ -296,8 +289,7 @@ int main(const int argc, const char* argv[]) {
writeStatus = setRoot;
for (int i = 0; i < argc; i++)
if (!strcmp("-d", argv[i]))
writeStatus = debug;
if (!strcmp("-d", argv[i])) writeStatus = debug;
init();
statusLoop();
@ -305,8 +297,7 @@ int main(const int argc, const char* argv[]) {
XCloseDisplay(dpy);
close(epollFD);
close(signalFD);
for (int i = 0; i < LEN(pipes); i++)
closePipe(pipes[i]);
for (int i = 0; i < LEN(pipes); i++) closePipe(pipes[i]);
return 0;
}