aboutsummaryrefslogtreecommitdiff
path: root/inotify_c.c
diff options
context:
space:
mode:
Diffstat (limited to 'inotify_c.c')
-rw-r--r--inotify_c.c92
1 files changed, 40 insertions, 52 deletions
diff --git a/inotify_c.c b/inotify_c.c
index 28432f2..5a6987b 100644
--- a/inotify_c.c
+++ b/inotify_c.c
@@ -1,17 +1,11 @@
#include <errno.h>
-#include <fcntl.h>
#include <poll.h>
-#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
#include <sys/inotify.h>
#include <unistd.h>
#include "Clean.h"
-/** The empty string, as a CleanString */
-static struct {int length; char chars[1]; } empty_string = {0,""};
-
/**
* Poll an inotify file descriptor
*
@@ -20,19 +14,20 @@ static struct {int length; char chars[1]; } empty_string = {0,""};
* re_nrevents Will be set to the number of polled events
* re_fd Will be set to fd (needed for uniqueness)
*/
-void clean_poll(int fd, int timeout, int *re_nrevents, int *re_fd) {
- struct pollfd pfd = {fd, POLLIN, 0};
- *re_nrevents = poll(&pfd, 1, timeout);
- *re_fd = fd;
+void clean_poll (int fd,int timeout,int *re_nrevents,int *re_fd)
+{
+ struct pollfd pfd={fd,POLLIN,0};
+ *re_nrevents=poll (&pfd,1,timeout);
+ *re_fd=fd;
}
/**
* CleanStrings that are returned from clean_inotify_check (so that we don't
* have to malloc all the time.)
*/
-static CleanStringVariable(wds_string, 1024);
-static CleanStringVariable(masks_string, 1024);
-static CleanStringVariable(names_string, 4096);
+static CleanStringVariable (wds_string,1024);
+static CleanStringVariable (masks_string,1024);
+static CleanStringVariable (names_string,4096);
/**
* Check for events on an inotify file descriptor.
@@ -49,58 +44,55 @@ static CleanStringVariable(names_string, 4096);
* at a time and casting that to an int. The string array can be read by
* splitting on \0 (since they are filenames, \0 cannot occur).
*/
-void clean_inotify_check(int fd,
- int *re_ok, CleanString* re_wds, CleanString* re_masks,
- CleanString* re_fnames, int *re_fd) {
+void clean_inotify_check (int fd,
+ int *re_ok,CleanString *re_wds,CleanString *re_masks,
+ CleanString *re_fnames, int *re_fd)
+{
char buf[4096] __attribute__((aligned(__alignof__(struct inotify_event))));
const struct inotify_event *ev;
ssize_t len;
char *ptr;
- struct pollfd pfd = {fd, POLLIN, 0};
+ struct pollfd pfd={fd,POLLIN,0};
int poll_n;
- char *wds_ptr = CleanStringCharacters(wds_string);
- char *masks_ptr = CleanStringCharacters(masks_string);
- char *names_ptr = CleanStringCharacters(names_string);
- CleanStringLength(wds_string) = 0;
- CleanStringLength(masks_string) = 0;
- CleanStringLength(names_string) = 0;
+ char *wds_ptr=CleanStringCharacters (wds_string);
+ char *masks_ptr=CleanStringCharacters (masks_string);
+ char *names_ptr=CleanStringCharacters (names_string);
+ CleanStringLength (wds_string)=0;
+ CleanStringLength (masks_string)=0;
+ CleanStringLength (names_string)=0;
- *re_ok = 0;
- *re_fd = fd;
+ *re_ok=0;
+ *re_fd=fd;
- *re_wds = (CleanString) &empty_string;
- *re_masks = (CleanString) &empty_string;
- *re_fnames = (CleanString) &empty_string;
+ *re_wds=(CleanString) wds_string;
+ *re_masks=(CleanString) masks_string;
+ *re_fnames=(CleanString) names_string;
- for (;;) {
- poll_n = poll(&pfd, 1, 0);
- if (poll_n < 0) {
+ for (;;){
+ poll_n=poll (&pfd,1,0);
+ if (poll_n<0)
return;
- } else if (poll_n == 0) {
+ if (poll_n==0)
break;
- }
- len = read(fd, buf, sizeof buf);
- if (len == -1 && errno != EAGAIN) {
+ len=read (fd,buf,sizeof (buf));
+ if (len==-1 && errno!=EAGAIN)
return;
- }
- if (len <= 0) {
+ if (len<=0)
break;
- }
- for (ptr = buf; ptr < buf + len;
- ptr += sizeof(struct inotify_event) + ev->len) {
- ev = (const struct inotify_event*) ptr;
+ for (ptr=buf; ptr<buf+len; ptr+=sizeof (struct inotify_event)+ev->len){
+ ev=(const struct inotify_event*) ptr;
- memcpy(masks_ptr, &ev->mask, 4);
- masks_ptr += 4;
- CleanStringLength(masks_string) += 4;
+ memcpy (masks_ptr,&ev->mask,4);
+ masks_ptr+=4;
+ CleanStringLength (masks_string)+=4;
- memcpy(wds_ptr, &ev->wd, sizeof(int));
- wds_ptr += sizeof(int);
- CleanStringLength(wds_string) += sizeof(int);
+ memcpy (wds_ptr,&ev->wd,sizeof (int));
+ wds_ptr+=sizeof (int);
+ CleanStringLength (wds_string)+=sizeof (int);
memcpy (names_ptr,&ev->name,ev->len);
names_ptr+=ev->len+1;
@@ -109,9 +101,5 @@ void clean_inotify_check(int fd,
}
}
- *re_wds = (CleanString) wds_string;
- *re_masks = (CleanString) masks_string;
- *re_fnames = (CleanString) names_string;
-
- *re_ok = 1;
+ *re_ok=1;
}