Example #1
0
int isdir(const char *path, struct stat *statdat) {

    struct stat sb;

    if(statdat == NULL) {
#ifdef _DEBUG
        printf("isdir()->STATING: %s\n", path);
#endif
        if(statit(path, &sb) != TRUE) {
            if(errno != 0) {
                perror("isdir()->stat()");
            }
            return FALSE;
        }
        if(S_ISDIR(sb.st_mode))
            return TRUE;

        return FALSE;
    }

    if(S_ISDIR(statdat->st_mode))
        return TRUE;

    return FALSE;
}
Example #2
0
int
main(int argc, char *argv[])
{
	struct timeval etim;
	float elapsed;

	if (argc != 2) {
		fprintf(stderr, "usage: %s dir\n", argv[0]);
		exit(1);
	}

	starttime();
	statit(argv[1]);
	endtime(&etim);
	elapsed = (float)etim.tv_sec + (float)etim.tv_usec / 1000000.0;
	fprintf(stdout, "%d calls in %f seconds (%f calls/sec)\n",
	    stats, elapsed, (float)stats / elapsed);
	return (0);
}
Example #3
0
int checktype(const char *event_fpath, struct inotify_event *event, char *tstring, struct stat *statdat) {

    char mychar;
    char *tstring_tmp, *mystr;
    char *freeme;

    struct stat sb;

    char fpath[ELEMENT_SIZE * 2] = {0};

    /* because we call it from multiple locations... */
    if(event == NULL) {
        snprintf(fpath, (ELEMENT_SIZE * 2), "%s", event_fpath);
    } else {
        snprintf(fpath, (ELEMENT_SIZE * 2), "%s%s", event_fpath, event->name);
    }

    tstring_tmp = strdup(tstring);

    if(statdat == NULL) {
        if(statit(fpath, &sb) != TRUE) {
            fprintf(stderr, "ERROR: checktype()->statit() returned != TRUE!\n");
            exit(EXIT_FAILURE);
        }
    } else {
        memcpy(&sb, statdat, sizeof(struct stat));
    }

    while((mystr = strtok(tstring_tmp, DELIM))) {
        if(strlen(mystr) == 1) {
            mychar = mystr[0];

            /* ATTENTION: do not miss to update *twhitelst at the top of this file! */

            switch(mychar) {
            case  'f':
                if((sb.st_mode & S_IFMT) == S_IFREG)
                    return TRUE;
                break;
            case  'd':
                if((sb.st_mode & S_IFMT) == S_IFDIR)
                    return TRUE;
                break;
            case  's':
                if((sb.st_mode & S_IFMT) == S_IFLNK)
                    return TRUE;
                break;
            case  'p':
                if((sb.st_mode & S_IFMT) == S_IFIFO)
                    return TRUE;
                break;
            case  'c':
                if((sb.st_mode & S_IFMT) == S_IFCHR)
                    return TRUE;
                break;
            case  'b':
                if((sb.st_mode & S_IFMT) == S_IFBLK)
                    return TRUE;
                break;
            case  'o':
                if((sb.st_mode & S_IFMT) == S_IFSOCK)
                    return TRUE;
                break;
            default  :  /* TODO: not existant! we should check that at startup! */
                break;
            }
        } else {
            /* TODO: implement a startup check for this value...
                     it should be of a type like this: a,b,c,d,e */
        }

        freeme = tstring_tmp;
        tstring_tmp = NULL;
    }

    free(freeme);

    return FALSE;
}