/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2008 Index Data
+ * Copyright (C) 1995-2013 Index Data
* See the file LICENSE for details.
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
extern char *databaseNames[];
extern int num_databaseNames;
-int sendAdminES(int type, char* param1)
+static int sendAdminES(int type, char* param1)
{
ODR out = getODROutputStream();
char *dbname = odr_strdup (out, databaseNames[0]);
-
+
/* Type: 1=reindex, 2=truncate, 3=delete, 4=create, 5=import, 6=refresh, 7=commit */
Z_APDU *apdu = zget_APDU(out, Z_APDU_extendedServicesRequest );
Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest;
r->u.adminService->which = Z_Admin_esRequest;
r->u.adminService->u.esRequest = (Z_AdminEsRequest *)
odr_malloc(out, sizeof(*r->u.adminService->u.esRequest));
-
+
toKeep = r->u.adminService->u.esRequest->toKeep =
- (Z_ESAdminOriginPartToKeep *)
+ (Z_ESAdminOriginPartToKeep *)
odr_malloc(out, sizeof(*r->u.adminService->u.esRequest->toKeep));
-
+
toKeep->which=type;
toKeep->databaseName = dbname;
switch ( type )
case Z_ESAdminOriginPartToKeep_reIndex:
toKeep->u.reIndex=odr_nullval();
break;
-
+
case Z_ESAdminOriginPartToKeep_truncate:
toKeep->u.truncate=odr_nullval();
break;
/* Unknown admin service */
break;
}
-
+
notToKeep = r->u.adminService->u.esRequest->notToKeep =
(Z_ESAdminOriginPartNotToKeep *)
odr_malloc(out, sizeof(*r->u.adminService->u.esRequest->notToKeep));
notToKeep->which=Z_ESAdminOriginPartNotToKeep_recordsWillFollow;
notToKeep->u.recordsWillFollow=odr_nullval();
-
+
send_apdu(apdu);
-
+
return 0;
}
}
/* cmd_adm_truncate
- Truncate the specified database, removing all records and index entries, but leaving
+ Truncate the specified database, removing all records and index entries, but leaving
the database & it's explain information intact ready for new records */
int cmd_adm_truncate(const char *arg)
{
dir = opendir(dir_str);
if (!dir)
return 0;
-
+
sendAdminES(Z_ESAdminOriginPartToKeep_import, type_str);
-
+
printf ("sent es request\n");
if ((cp=strrchr(dir_str, '/')) && cp[1] == 0)
sep="";
-
+
while ((ent = readdir(dir)))
{
if (fnmatch (pattern_str, ent->d_name, 0) == 0)
char fname[1024];
struct stat status;
FILE *inf;
-
+
sprintf (fname, "%s%s%s", dir_str, sep, ent->d_name);
stat (fname, &status);
rec->u.intermediateFragment->which =
Z_FragmentSyntax_notExternallyTagged;
rec->u.intermediateFragment->u.notExternallyTagged = oct;
-
+
oct->len = oct->size = status.st_size;
oct->buf = (unsigned char *) odr_malloc (out, oct->size);
- if (fread(oct->buf, 1, oct->size, inf) != oct->size)
+ if (fread(oct->buf, 1, oct->size, inf) != (size_t) oct->size)
{
printf("Incomplete read of file %s\n", fname);
}
{
printf("Close failed for file %s\n", fname);
}
-
+
segment->segmentRecords[segment->num_segmentRecords++] = rec;
if (segment->num_segmentRecords == chunk)
send_apdu (apdu);
apdu = 0;
}
- }
+ }
}
}
if (apdu)
#endif
-/* "Freshen" the specified database, by checking metadata records against the sources from which they were
+/* "Freshen" the specified database, by checking metadata records against the sources from which they were
generated, and creating a new record if the source has been touched since the last extraction */
int cmd_adm_refresh(const char *arg)
{
return 0;
}
-/* cmd_adm_commit
+/* cmd_adm_commit
Make imported records a permenant & visible to the live system */
int cmd_adm_commit(const char *arg)
{
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab