- log (LOG_DEBUG, "Text extract of %d", sysno);
- k.sysno = sysno;
- inf = fopen (fname, "r");
- if (!inf)
- {
- log (LOG_WARN|LOG_ERRNO, "open %s", fname);
- return;
- }
- while ((c=getc (inf)) != EOF)
- {
- int i = 0;
- while (i < 254 && c != EOF && isalnum(c))
- {
- w[i++] = c;
- c = getc (inf);
- }
- if (i)
- {
- w[i] = 0;
-
- k.seqno = seqno++;
- k.field = 0;
- key_write (cmd, &k, w);
- }
- if (c == EOF)
- break;
- }
- fclose (inf);
-}
-
-void file_extract (int cmd, struct stat *fs, const char *fname)
-{
- int i;
- char ext[128];
- SYSNO sysno;
- char ext_res[128];
- const char *file_type;
- void *file_info;
-
- log (LOG_DEBUG, "%c %s", cmd, fname);
- return;
- for (i = strlen(fname); --i >= 0; )
- if (fname[i] == '/')
- {
- strcpy (ext, "");
- break;
- }
- else if (fname[i] == '.')
- {
- strcpy (ext, fname+i+1);
- break;
- }
- sprintf (ext_res, "fileExtension.%s", ext);
- if (!(file_type = res_get (common_resource, ext_res)))
- return;
-
- file_info = dict_lookup (file_idx, fname);
- if (!file_info)
- {
- sysno = sysno_next++;
- dict_insert (file_idx, fname, sizeof(sysno), &sysno);
- }
- else
- memcpy (&sysno, (char*) file_info+1, sizeof(sysno));
- if (!strcmp (file_type, "text"))
- text_extract (sysno, cmd, fname);
-}
-
-static void repository_extract_r (int cmd, char *rep)
-{
- struct dir_entry *e;
- int i;
- struct stat fs;
- size_t rep_len = strlen (rep);
-
- e = dir_open (rep);
- if (!e)
- return;
- if (rep[rep_len-1] != '/')
- rep[rep_len] = '/';
- else
- --rep_len;
- for (i=0; e[i].name; i++)
- {
- if (!strcmp (e[i].name, ".") || !strcmp (e[i].name, ".."))
- continue;
- strcpy (rep +rep_len+1, e[i].name);
- stat (rep, &fs);
- switch (fs.st_mode & S_IFMT)
- {
- case S_IFREG:
- file_extract (cmd, &fs, rep);
- break;
- case S_IFDIR:
- repository_extract_r (cmd, rep);
- break;
- }
- }
- dir_free (&e);
-}
-
-void repository_update_r (int cmd, char *dst, char *src);
-
-void repository_add_tree (int cmd, char *dst, char *src)
-{
- mkdir (dst, 0755);
- repository_update_r (cmd, dst, src);
-}