* Sebastian Hammer, Adam Dickmeiss
*
* $Log: trav.c,v $
- * Revision 1.7 1995-11-20 11:56:28 adam
+ * Revision 1.9 1995-11-21 09:20:32 adam
+ * Yet more work on record match.
+ *
+ * Revision 1.8 1995/11/20 16:59:46 adam
+ * New update method: the 'old' keys are saved for each records.
+ *
+ * Revision 1.7 1995/11/20 11:56:28 adam
* Work on new traversal.
*
* Revision 1.6 1995/11/17 15:54:42 adam
#include <alexutil.h>
#include "index.h"
+#if 0
static void repository_extract_r (int cmd, char *rep, char *databaseName)
{
struct dir_entry *e;
dir_free (&e_src);
}
+void repository (int cmd, const char *rep, const char *base_path,
+ char *databaseName)
+{
+ char rep_tmp1[2048];
+ char rep_tmp2[2048];
+
+ strcpy (rep_tmp1, rep);
+ if (base_path)
+ {
+ strcpy (rep_tmp2, base_path);
+ repository_update_r (cmd, rep_tmp2, rep_tmp1, databaseName);
+ }
+ else
+ repository_extract_r (cmd, rep_tmp1, databaseName);
+}
+#endif
+
static int repComp (const char *a, const char *b, size_t len)
{
if (!len)
{
if (!e_src)
return;
-#if 1
if (src_len && src[src_len-1] == '/')
--src_len;
else
src[src_len] = '/';
src[src_len+1] = '\0';
-#endif
dirs_mkdir (di, src, 0);
dst = NULL;
}
}
else
{
-#if 1
if (src_len && src[src_len-1] == '/')
--src_len;
else
src[src_len] = '/';
src[src_len+1] = '\0';
-#endif
dst = dirs_read (di);
}
dir_sort (e_src);
{
int sd;
- if (dst && !repComp (dst->path, src, src_len))
+ if (dst && !repComp (dst->path, src, src_len+1))
{
if (e_src[i_src].name)
{
case dirs_file:
if (e_src[i_src].ctime > dst->ctime)
{
- file_extract ('d', tmppath, tmppath, databaseName);
- file_extract ('a', tmppath, tmppath, databaseName);
- dirs_add (di, src, dst->sysno, e_src[i_src].ctime);
+ if (fileExtract (&dst->sysno, tmppath, databaseName, 0))
+ dirs_add (di, src, dst->sysno, e_src[i_src].ctime);
}
- dst = dirs_read (di);
+ dst = dirs_read (di);
break;
case dirs_dir:
repositoryUpdateR (di, dst, base, src, databaseName);
}
else if (sd > 0)
{
- SYSNO sysno;
+ SYSNO sysno = 0;
strcpy (src + src_len+1, e_src[i_src].name);
sprintf (tmppath, "%s%s", base, src);
switch (e_src[i_src].kind)
{
case dirs_file:
- sysno = file_extract ('a', tmppath, tmppath, databaseName);
- dirs_add (di, src, sysno, e_src[i_src].ctime);
+ if (fileExtract (&sysno, tmppath, databaseName, 0))
+ dirs_add (di, src, sysno, e_src[i_src].ctime);
break;
case dirs_dir:
repositoryUpdateR (di, dst, base, src, databaseName);
+ if (dst)
+ dst = dirs_last (di);
break;
}
i_src++;
dict_close (dict);
}
-
-void repository (int cmd, const char *rep, const char *base_path,
- char *databaseName)
-{
- char rep_tmp1[2048];
- char rep_tmp2[2048];
-
- strcpy (rep_tmp1, rep);
- if (base_path)
- {
- strcpy (rep_tmp2, base_path);
- repository_update_r (cmd, rep_tmp2, rep_tmp1, databaseName);
- }
- else
- repository_extract_r (cmd, rep_tmp1, databaseName);
-}
-