Example #1
0
static void hash_dir( int out, const char *path )
{
    DIR *dir;
    struct dirent *entry;

    dir = rb->opendir( path );
    if( dir )
    {
        while( !quit && ( entry = rb->readdir( dir ) ) )
        {
            char childpath[MAX_PATH];
            rb->snprintf( childpath, MAX_PATH, "%s/%s",
                          rb->strcmp( path, "/" ) ? path : "", entry->d_name );
            if( entry->attribute & ATTR_DIRECTORY )
            {
                if( rb->strcmp( entry->d_name, "." )
                    && rb->strcmp( entry->d_name, ".." ) )
                {
                    /* Got a sub directory */
                    hash_dir( out, childpath );
                }
            }
            else
            {
                /* Got a file */
                hash_file( out, childpath );
            }
        }
        rb->closedir( dir );
    }
}
Example #2
0
int main(int argc, char **argv)
{
	const char *env, *opt;
	int i, numargs, r = 0;

	evpmd = EVP_sha1();
	evpmdsize = EVP_MD_size(evpmd);

	numargs = argc;
	for (i = 1; i < argc; i++) {
		if (argv[i][0] != '-') continue;
		if (strcmp(argv[i], "--") == 0) { argv[i] = 0; numargs--; break; }
		opt = &argv[i][1];
		if (strcmp(opt, "compat") == 0) {
			do_hash_new = do_hash_old = 1;
		} else if (strcmp(opt, "old") == 0) {
			do_hash_new = 0;
			do_hash_old = 1;
		} else if (strcmp(opt, "n") == 0) {
			do_remove_links = 0;
		} else if (strcmp(opt, "v") == 0) {
			do_verbose++;
		} else {
			if (strcmp(opt, "h") != 0)
				fprintf(stderr, "unknown option %s\n", argv[i]);
			c_rehash_usage();
			return 1;
		}
		argv[i] = 0;
		numargs--;
	}

	if (numargs > 1) {
		for (i = 1; i < argc; i++)
			if (argv[i]) r |= hash_dir(argv[i]);
	} else if ((env = getenv("SSL_CERT_DIR")) != NULL) {
		char *e, *m;
		m = strdup(env);
		for (e = strtok(m, ":"); e != NULL; e = strtok(NULL, ":"))
			r |= hash_dir(e);
		free(m);
	} else {
		r |= hash_dir("/etc/ssl/certs");
	}

	return r ? 2 : 0;
}
Example #3
0
File: dir.c Project: wtaysom/tau
int find_dir (char *name)
{
	int		rc;
	find_search_s	s;

	s.key = hash_dir(name);
	s.name = name;

	rc = search( &Tree, s.key, find_search, &s);
	return rc;
}
Example #4
0
int main(int argc, char **argv)
{
	const char *env;
	int i;

	evpmd = EVP_sha1();
	evpmdsize = EVP_MD_size(evpmd);

	if (argc > 1) {
		for (i = 1; i < argc; i++)
			hash_dir(argv[i]);
	} else if ((env = getenv("SSL_CERT_DIR")) != NULL) {
		char *e, *m;
		m = strdup(env);
		for (e = strtok(m, ":"); e != NULL; e = strtok(NULL, ":"))
			hash_dir(e);
		free(m);
	} else {
		hash_dir("/etc/ssl/certs");
	}

	return 0;
}
Example #5
0
File: dir.c Project: wtaysom/tau
int delete_dir (char *name)
{
	int		rc;
	delete_search_s	s;

	s.key = hash_dir(name);
	s.name = name;
	rc = search( &Tree, s.key, delete_search, &s);
	if (rc) {
		printf("delete_dir [%d] couldn't find %s\n", rc, name);
		return rc;
	}
	rc = delete( &Tree, s.key);
	if (rc) {
		printf("Failed to delete string \"%s\" err=%d\n",
			name, rc);
	}
	return 0;
}
Example #6
0
static void hash_list( int out, const char *path )
{
    int list = rb->open( path, O_RDONLY );
    char newpath[MAX_PATH];
    if( list < 0 ) return;

    while( !quit && rb->read_line( list, newpath, MAX_PATH ) > 0 )
    {
        DIR *dir = rb->opendir( newpath );
        if( dir )
        {
            rb->closedir( dir );
            hash_dir( out, newpath );
        }
        else
        {
            hash_file( out, newpath );
        }
    }

    rb->close( list );
}
Example #7
0
File: dir.c Project: wtaysom/tau
int insert_dir (char *name, u32 ino, u8 type)
{
	int		rc;
	insert_search_s	s;
	unint		size;

	size = strlen(name) + 1 + sizeof(type) + sizeof(ino);

	s.key  = hash_dir(name);
	s.name = name;
	s.ino  = ino;
	s.type = type;

	rc = insert( &Tree, s.key, &s, size);
	if (rc == 0) return 0;

	if (rc != qERR_DUP) {
		printf("Failed to insert string \"%s\" err=%d\n",
			name, rc);
		return rc;
	}

	s.name = name;
	s.set_new_key = FALSE;

	rc = search( &Tree, s.key, insert_search, &s);
	if (rc == qERR_DUP) {
		printf("Duplicate string found \"%s\" err=%d\n",
			name, rc);
		return rc;
	}
	rc = insert( &Tree, s.key, name, strlen(name)+1);
	if (rc) {
		printf("Failed to insert string \"%s\" err=%d\n",
			name, rc);
		return rc;
	}
	return 0;
}