updated code

This commit is contained in:
2026-03-06 07:24:41 +00:00
parent 5fd3de9754
commit 3785276e31

View File

@@ -11,13 +11,17 @@
#include <signal.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/file.h>
#define LOCK_FILE "/tmp/my_wallpaperd.lock"
#define SOCKET_FILE "/tmp/my_wallpaper.sock"
int initServerSockServer() {
int server_fd = socket(AF_UNIX, SOCK_STREAM, 0);
struct sockaddr_un addr = {0};
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, "/tmp/my_wallpaper.sock");
strcpy(addr.sun_path, SOCKET_FILE);
unlink(addr.sun_path);
if (server_fd < 0) perror("socket");
if (bind(server_fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) perror("bind");
@@ -168,9 +172,26 @@ void handleCommand(char *buff, int n, char** images, size_t image_count){
}
}
int main(int argc, char** argv) {
int fd = open(LOCK_FILE, O_CREAT | O_RDWR, 0666);
printf("INFO: daemon started\n");
if (fd == -1) {
perror("ERROR: Failed to open lock file");
return 1;
}
if (flock(fd, LOCK_EX | LOCK_NB) == -1) {
fprintf(stderr, "INFO: Another instance is already running.\n");
fprintf(stderr, "INFO: exiting\n");
close(fd);
return 1;
}
char** images = NULL;
size_t image_count = 0;
@@ -182,21 +203,22 @@ int main(int argc, char** argv) {
struct stat stat_buffer;
if(stat(argv[1], &stat_buffer) != 0){
printf("dirpath is invalid\n");
printf("ERROR: dirpath is invalid\n");
return 1;
}
if(stat(argv[2], &stat_buffer) != 0){
printf("filepath is invalid\n");
printf("ERROR: filepath is invalid\n");
return 1;
}
static_wallpaper_path = argv[2];
collectImages(argv[1], &images, &image_count);
printf("collected %ld suitable images\n", image_count);
printf("INFO: collected %ld suitable images\n", image_count);
shuffleImages(images, image_count);
printf("images shuffled\n");
printf("INFO: images shuffled\n");
printf("starting server\n");
printf("INFO: starting server\n");
int server_fd = initServerSockServer();
setBackgroundImage(images[0]);
@@ -212,7 +234,7 @@ int main(int argc, char** argv) {
int ret = select(server_fd + 1, &fds, NULL, NULL, &tv);
if (ret < 0) {
perror("select\n");
perror("ERROR: select\n");
break;
}