You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2011/11/17 13:36:17 UTC
svn commit: r1203167 [3/3] - in /incubator/celix/trunk: ./ cmake/
deployment_admin/ deployment_admin/META-INF/ deployment_admin/private/
deployment_admin/private/include/ deployment_admin/private/src/
examples/echo_service/client/MANIFEST/ examples/ech...
Copied: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Modified: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/paint_frame.c Thu Nov 17 12:36:14 2011
@@ -232,8 +232,8 @@ static void paintFrame_destroy(GtkWidget
frame->showing = false;
- bundleContext_getBundleById(frame->context, 0, &bundle);
- bundle_stop(bundle, 0);
+// bundleContext_getBundleById(frame->context, 0, &bundle);
+// bundle_stop(bundle, 0);
}
static void paintFrame_destroyWidgets(PAINT_FRAME frame) {
Copied: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/square/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/triangle/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/receiver-2.0/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/receiver-2.0/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/receiver-2.0/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/receiver-2.0/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/receiver-2.0/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/receiver/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/receiver/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/receiver/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/receiver/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/receiver/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/sender/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/sender/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/sender/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/sender/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/sender/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/whiteboard/publisherA/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/whiteboard/publisherA/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/publisherA/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/whiteboard/publisherA/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/whiteboard/publisherA/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/whiteboard/publisherB/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/whiteboard/publisherB/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/publisherB/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/whiteboard/publisherB/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/whiteboard/publisherB/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/whiteboard/tracker/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/whiteboard/tracker/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/whiteboard/tracker/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/whiteboard/tracker/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/examples/whiteboard/tracker_depman/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/examples/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker_depman/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/examples/whiteboard/tracker_depman/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/examples/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Modified: incubator/celix/trunk/framework/private/include/bundle_archive.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/bundle_archive.h?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/bundle_archive.h (original)
+++ incubator/celix/trunk/framework/private/include/bundle_archive.h Thu Nov 17 12:36:14 2011
@@ -35,7 +35,7 @@
typedef struct bundleArchive * BUNDLE_ARCHIVE;
-celix_status_t bundleArchive_create(char * archiveRoot, long id, char * location, apr_pool_t *mp, BUNDLE_ARCHIVE *bundle_archive);
+celix_status_t bundleArchive_create(char * archiveRoot, long id, char * location, char *inputFile, apr_pool_t *mp, BUNDLE_ARCHIVE *bundle_archive);
celix_status_t bundleArchive_destroy(BUNDLE_ARCHIVE archive);
celix_status_t bundleArchive_createSystemBundleArchive(apr_pool_t *mp, BUNDLE_ARCHIVE *bundle_archive);
celix_status_t bundleArchive_recreate(char * archiveRoot, apr_pool_t *mp, BUNDLE_ARCHIVE *bundle_archive);
Modified: incubator/celix/trunk/framework/private/include/bundle_cache.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/bundle_cache.h?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/bundle_cache.h (original)
+++ incubator/celix/trunk/framework/private/include/bundle_cache.h Thu Nov 17 12:36:14 2011
@@ -35,7 +35,7 @@ typedef struct bundleCache * BUNDLE_CACH
celix_status_t bundleCache_create(PROPERTIES configurationMap, apr_pool_t *mp, BUNDLE_CACHE *bundle_cache);
celix_status_t bundleCache_destroy(BUNDLE_CACHE cache);
celix_status_t bundleCache_getArchives(BUNDLE_CACHE cache, ARRAY_LIST *archives);
-celix_status_t bundleCache_createArchive(BUNDLE_CACHE cache, long id, char * location, apr_pool_t *bundlePool, BUNDLE_ARCHIVE *archive);
+celix_status_t bundleCache_createArchive(BUNDLE_CACHE cache, long id, char * location, char *inputFile, apr_pool_t *bundlePool, BUNDLE_ARCHIVE *archive);
celix_status_t bundleCache_delete(BUNDLE_CACHE cache);
Modified: incubator/celix/trunk/framework/private/include/bundle_context.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/bundle_context.h?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/bundle_context.h (original)
+++ incubator/celix/trunk/framework/private/include/bundle_context.h Thu Nov 17 12:36:14 2011
@@ -37,6 +37,7 @@ celix_status_t bundleContext_getFramewor
celix_status_t bundleContext_getMemoryPool(BUNDLE_CONTEXT context, apr_pool_t **memory_pool);
celix_status_t bundleContext_installBundle(BUNDLE_CONTEXT context, char * location, BUNDLE *bundle);
+celix_status_t bundleContext_installBundle2(BUNDLE_CONTEXT context, char * location, char *inputFile, BUNDLE *bundle);
celix_status_t bundleContext_registerService(BUNDLE_CONTEXT context, char * serviceName, void * svcObj,
PROPERTIES properties, SERVICE_REGISTRATION *service_registration);
Modified: incubator/celix/trunk/framework/private/include/framework.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/framework.h?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/framework.h (original)
+++ incubator/celix/trunk/framework/private/include/framework.h Thu Nov 17 12:36:14 2011
@@ -43,7 +43,7 @@ void framework_stop(FRAMEWORK framework)
celix_status_t fw_getProperty(FRAMEWORK framework, const char *name, char **value);
-celix_status_t fw_installBundle(FRAMEWORK framework, BUNDLE * bundle, char * location);
+celix_status_t fw_installBundle(FRAMEWORK framework, BUNDLE * bundle, char * location, char *inputFile);
celix_status_t fw_uninstallBundle(FRAMEWORK framework, BUNDLE bundle);
celix_status_t framework_getBundleEntry(FRAMEWORK framework, BUNDLE bundle, char *name, apr_pool_t *pool, char **entry);
Modified: incubator/celix/trunk/framework/private/include/manifest.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/manifest.h?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/manifest.h (original)
+++ incubator/celix/trunk/framework/private/include/manifest.h Thu Nov 17 12:36:14 2011
@@ -31,6 +31,7 @@
struct manifest {
PROPERTIES mainAttributes;
+ HASH_MAP attributes;
};
typedef struct manifest * MANIFEST;
@@ -39,6 +40,7 @@ void manifest_destroy(MANIFEST manifest)
void manifest_clear(MANIFEST manifest);
PROPERTIES manifest_getMainAttributes(MANIFEST manifest);
+celix_status_t manifest_getEntries(MANIFEST manifest, HASH_MAP *map);
celix_status_t manifest_read(char *filename, MANIFEST *manifest);
void manifest_write(MANIFEST manifest, char * filename);
Modified: incubator/celix/trunk/framework/private/src/bundle_archive.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_archive.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_archive.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_archive.c Thu Nov 17 12:36:14 2011
@@ -100,7 +100,7 @@ celix_status_t bundleArchive_reviseInter
celix_status_t bundleArchive_readLastModified(BUNDLE_ARCHIVE archive, time_t *time);
celix_status_t bundleArchive_writeLastModified(BUNDLE_ARCHIVE archive);
-celix_status_t bundleArchive_create(char * archiveRoot, long id, char * location, apr_pool_t *mp, BUNDLE_ARCHIVE *bundle_archive) {
+celix_status_t bundleArchive_create(char * archiveRoot, long id, char * location, char *inputFile, apr_pool_t *mp, BUNDLE_ARCHIVE *bundle_archive) {
celix_status_t status = CELIX_SUCCESS;
apr_pool_t *revisions_pool;
BUNDLE_ARCHIVE archive;
@@ -123,7 +123,7 @@ celix_status_t bundleArchive_create(char
bundleArchive_initialize(archive);
- bundleArchive_revise(archive, location, NULL);
+ bundleArchive_revise(archive, location, inputFile);
*bundle_archive = archive;
} else {
@@ -185,9 +185,9 @@ celix_status_t bundleArchive_recreate(ch
apr_dir_t *dir;
if (apr_dir_open(&dir, archiveRoot, mp) == APR_SUCCESS) {
apr_finfo_t dp;
+ long idx;
while ((apr_dir_read(&dp, APR_FINFO_DIRENT|APR_FINFO_TYPE, dir)) == APR_SUCCESS) {
if (dp.filetype == APR_DIR && (strncmp(dp.name, "version", 7) == 0)) {
- long idx;
sscanf(dp.name, "version%*d.%ld", &idx);
}
}
@@ -195,7 +195,7 @@ celix_status_t bundleArchive_recreate(ch
char *location;
status = bundleArchive_getRevisionLocation(archive, 0, &location);
if (status == CELIX_SUCCESS) {
- bundleArchive_revise(archive, location, NULL);
+ bundleArchive_reviseInternal(archive, true, idx, location, NULL);
*bundle_archive = archive;
}
Modified: incubator/celix/trunk/framework/private/src/bundle_cache.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_cache.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_cache.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_cache.c Thu Nov 17 12:36:14 2011
@@ -156,7 +156,7 @@ celix_status_t bundleCache_getArchives(B
return status;
}
-celix_status_t bundleCache_createArchive(BUNDLE_CACHE cache, long id, char * location, apr_pool_t *bundlePool,
+celix_status_t bundleCache_createArchive(BUNDLE_CACHE cache, long id, char * location, char *inputFile, apr_pool_t *bundlePool,
BUNDLE_ARCHIVE *bundle_archive) {
celix_status_t status;
char archiveRoot[256];
@@ -165,7 +165,7 @@ celix_status_t bundleCache_createArchive
if (cache && location && bundlePool) {
sprintf(archiveRoot, "%s/bundle%ld", cache->cacheDir, id);
- status = bundleArchive_create(apr_pstrdup(cache->mp, archiveRoot), id, location, bundlePool, bundle_archive);
+ status = bundleArchive_create(apr_pstrdup(cache->mp, archiveRoot), id, location, inputFile, bundlePool, bundle_archive);
}
return status;
Modified: incubator/celix/trunk/framework/private/src/bundle_context.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_context.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_context.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_context.c Thu Nov 17 12:36:14 2011
@@ -118,11 +118,15 @@ celix_status_t bundleContext_getMemoryPo
}
celix_status_t bundleContext_installBundle(BUNDLE_CONTEXT context, char * location, BUNDLE *bundle) {
+ return bundleContext_installBundle2(context, location, NULL, bundle);
+}
+
+celix_status_t bundleContext_installBundle2(BUNDLE_CONTEXT context, char * location, char *inputFile, BUNDLE *bundle) {
celix_status_t status = CELIX_SUCCESS;
BUNDLE b = NULL;
if (context != NULL && *bundle == NULL) {
- if (fw_installBundle(context->framework, &b, location) != CELIX_SUCCESS) {
+ if (fw_installBundle(context->framework, &b, location, inputFile) != CELIX_SUCCESS) {
status = CELIX_FRAMEWORK_EXCEPTION;
} else {
*bundle = b;
Modified: incubator/celix/trunk/framework/private/src/bundle_revision.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_revision.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_revision.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_revision.c Thu Nov 17 12:36:14 2011
@@ -32,7 +32,9 @@ celix_status_t bundleRevision_create(cha
} else {
if (inputFile != NULL) {
status = extractBundle(inputFile, root);
- } else {
+ } else if (strcmp(location, "inputstream:") != 0) {
+ // TODO how to handle this correctly?
+ // If location != inputstream, extract it, else ignore it and assume this is a cache entry.
status = extractBundle(location, root);
}
Modified: incubator/celix/trunk/framework/private/src/framework.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/framework.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/framework.c (original)
+++ incubator/celix/trunk/framework/private/src/framework.c Thu Nov 17 12:36:14 2011
@@ -75,7 +75,7 @@ celix_status_t framework_releaseInstallL
long framework_getNextBundleId(FRAMEWORK framework);
-celix_status_t fw_installBundle2(FRAMEWORK framework, BUNDLE * bundle, long id, char * location, BUNDLE_ARCHIVE archive);
+celix_status_t fw_installBundle2(FRAMEWORK framework, BUNDLE * bundle, long id, char * location, char *inputFile, BUNDLE_ARCHIVE archive);
celix_status_t fw_refreshBundles(FRAMEWORK framework, BUNDLE bundles[], int size);
celix_status_t fw_refreshBundle(FRAMEWORK framework, BUNDLE bundle);
@@ -279,7 +279,7 @@ celix_status_t fw_init(FRAMEWORK framewo
BUNDLE bundle;
char *location;
status = bundleArchive_getLocation(archive, &location);
- fw_installBundle2(framework, &bundle, id, location, archive);
+ fw_installBundle2(framework, &bundle, id, location, NULL, archive);
}
}
arrayList_destroy(archives);
@@ -391,11 +391,11 @@ celix_status_t fw_getProperty(FRAMEWORK
return status;
}
-celix_status_t fw_installBundle(FRAMEWORK framework, BUNDLE * bundle, char * location) {
- return fw_installBundle2(framework, bundle, -1, location, NULL);
+celix_status_t fw_installBundle(FRAMEWORK framework, BUNDLE * bundle, char * location, char *inputFile) {
+ return fw_installBundle2(framework, bundle, -1, location, inputFile, NULL);
}
-celix_status_t fw_installBundle2(FRAMEWORK framework, BUNDLE * bundle, long id, char * location, BUNDLE_ARCHIVE archive) {
+celix_status_t fw_installBundle2(FRAMEWORK framework, BUNDLE * bundle, long id, char * location, char *inputFile, BUNDLE_ARCHIVE archive) {
BUNDLE_ARCHIVE bundle_archive = NULL;
BUNDLE_STATE state;
@@ -422,7 +422,7 @@ celix_status_t fw_installBundle2(FRAMEWO
apr_pool_create(&bundlePool, framework->mp);
if (archive == NULL) {
id = framework_getNextBundleId(framework);
- status = bundleCache_createArchive(framework->cache, id, location, bundlePool, &bundle_archive);
+ status = bundleCache_createArchive(framework->cache, id, location, inputFile, bundlePool, &bundle_archive);
if (status != CELIX_SUCCESS) {
framework_releaseInstallLock(framework, location);
return status;
@@ -1224,7 +1224,7 @@ celix_status_t getManifest(BUNDLE_ARCHIV
status = bundleArchive_getCurrentRevisionNumber(archive, &revisionNumber);
if (status == CELIX_SUCCESS) {
if (status == CELIX_SUCCESS) {
- sprintf(mf, "%s/version%ld.%ld/MANIFEST/MANIFEST.MF",
+ sprintf(mf, "%s/version%ld.%ld/META-INF/MANIFEST.MF",
archiveRoot,
refreshCount,
revisionNumber
Modified: incubator/celix/trunk/framework/private/src/manifest.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/manifest.c?rev=1203167&r1=1203166&r2=1203167&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/manifest.c (original)
+++ incubator/celix/trunk/framework/private/src/manifest.c Thu Nov 17 12:36:14 2011
@@ -28,8 +28,10 @@
#include "celixbool.h"
#include "manifest.h"
+#include "utils.h"
int fpeek(FILE *stream);
+celix_status_t manifest_readAttributes(MANIFEST manifest, PROPERTIES properties, FILE *file);
void manifest_clear(MANIFEST manifest) {
@@ -39,89 +41,89 @@ PROPERTIES manifest_getMainAttributes(MA
return manifest->mainAttributes;
}
+celix_status_t manifest_getEntries(MANIFEST manifest, HASH_MAP *map) {
+ *map = manifest->attributes;
+ return CELIX_SUCCESS;
+}
+
celix_status_t manifest_read(char *filename, MANIFEST *manifest) {
celix_status_t status = CELIX_SUCCESS;
MANIFEST mf = NULL;
mf = (MANIFEST) malloc(sizeof(*mf));
if (mf != NULL) {
- PROPERTIES mainAttributes = properties_create();
-
- mf->mainAttributes = mainAttributes;
+ mf->mainAttributes = properties_create();
+ mf->attributes = hashMap_create(string_hash, NULL, string_equals, NULL);
FILE *file = fopen ( filename, "r" );
if (file != NULL) {
- char lbuf [ 512 ];
- char * lastline;
+ char lbuf[512];
+ manifest_readAttributes(mf, mf->mainAttributes, file);
+
+ int len;
char * name = NULL;
- char * value = NULL;
+ bool skipEmptyLines = true;
+ char * lastline;
+
+ while (fgets(lbuf, sizeof(lbuf), file) != NULL ) {
+ len = strlen(lbuf);
+ if (lbuf[--len] != '\n') {
+ printf("MANIFEST: Line too long\n");
+ return CELIX_FILE_IO_EXCEPTION;
+ }
+ if (len > 0 && lbuf[len - 1] == '\r') {
+ --len;
+ }
+ if (len == 0 && skipEmptyLines) {
+ continue;
+ }
+ skipEmptyLines = false;
+
+ if (name == NULL) {
+ if ((tolower(lbuf[0]) == 'n') && (tolower(lbuf[1]) == 'a') &&
+ (tolower(lbuf[2]) == 'm') && (tolower(lbuf[3]) == 'e') &&
+ (lbuf[4] == ':') && (lbuf[5] == ' ')) {
+ name = (char *) malloc((len + 1) - 6);
+ name = strncpy(name, lbuf+6, len - 6);
+ name[len - 6] = '\0';
+ } else {
+ printf("MANIFEST: Invalid manifest format\n");
+ return CELIX_FILE_IO_EXCEPTION;
+ }
+
+ if (fpeek(file) == ' ') {
+ int newlen = len - 6;
+ lastline = (char *) malloc(newlen + 1);
+ lastline = strncpy(lastline, lbuf+6, len - 6);
+ lastline[newlen] = '\0';
+ continue;
+ }
+ } else {
+ int newlen = strlen(lastline) + len;
+ char buf[newlen];
+ strcpy(buf, lastline);
+ strncat(buf, lbuf+1, len - 1);
+
+ if (fpeek(file) == ' ') {
+ lastline = strcpy(lastline, buf);
+ continue;
+ }
+ name = (char *) malloc(strlen(buf) + 1);
+ name = strcpy(name, buf);
+ name[strlen(buf)] = '\0';
+ lastline = NULL;
+ }
+
+ PROPERTIES attributes = hashMap_get(mf->attributes, name);
+ if (attributes == NULL) {
+ attributes = properties_create();
+ hashMap_put(mf->attributes, strdup(name), attributes);
+ }
+ manifest_readAttributes(mf, attributes, file);
- while ( fgets ( lbuf, sizeof lbuf, file ) != NULL ) {
- bool lineContinued = false;
- int len = strlen(lbuf);
-
- if (lbuf[--len] != '\n') {
- return CELIX_INVALID_SYNTAX;
- }
-
- if (len > 0 && lbuf[len-1] == '\r') {
- --len;
- }
-
- if (len == 0) {
- break;
- }
-
- int i = 0;
- if (lbuf[0] == ' ') {
- // continuation of previous line
- if (name == NULL) {
- return CELIX_INVALID_SYNTAX;
- }
- lineContinued = true;
- int newlen = strlen(lastline) + len - 1;
- char buf [newlen];
- strcpy(buf, lastline);
- strncat(buf, lbuf+1, len - 1);
-
- if (fpeek(file) == ' ') {
- lastline = strcpy(lastline, buf);
- continue;
- }
- value = (char *) malloc(strlen(buf) + 1);
- value = strcpy(value, buf);
- value[strlen(buf)] = '\0';
- lastline = NULL;
- } else {
- while (lbuf[i++] != ':') {
- if (i >= len) {
- // throw new IOException("invalid header field");
- return CELIX_INVALID_SYNTAX;
- }
- }
- if (lbuf[i++] != ' ') {
- // throw new IOException("invalid header field");
- return CELIX_INVALID_SYNTAX;
- }
- name = (char *) malloc((i + 1) - 2);
- name = strncpy(name, lbuf, i - 2);
- name[i - 2] = '\0';
- if (fpeek(file) == ' ') {
- int newlen = len - i;
- lastline = (char *) malloc(newlen + 1);
- lastline = strncpy(lastline, lbuf+i, len -i);
- continue;
- }
- value = (char *) malloc((len + 1) - i);
- value = strncpy(value, lbuf+i, len - i);
- value[len - i] = '\0';
- }
-
- if ((properties_set(mainAttributes, name, value) != NULL) && (!lineContinued)) {
- printf("Duplicate entry: %s", name);
- }
free(name);
- free(value);
+ name = NULL;
+ skipEmptyLines = true;
}
fclose(file);
@@ -162,3 +164,79 @@ int fpeek(FILE *stream) {
return c;
}
+celix_status_t manifest_readAttributes(MANIFEST manifest, PROPERTIES properties, FILE *file) {
+ char *name = NULL;
+ char *value = NULL;
+ char *lastLine = NULL;
+ char lbuf[512];
+
+ int len;
+ while (fgets(lbuf, sizeof(lbuf), file ) != NULL ) {
+ len = strlen(lbuf);
+ bool lineContinued = false;
+ if (lbuf[--len] != '\n') {
+ printf("MANIFEST: Line too long\n");
+ return CELIX_FILE_IO_EXCEPTION;
+ }
+ if (len > 0 && lbuf[len - 1] == '\r') {
+ --len;
+ }
+ if (len == 0) {
+ break;
+ }
+ int i = 0;
+ if (lbuf[0] == ' ') {
+ // Line continued
+ if (name == NULL) {
+ printf("MANIFEST: No continued line expected\n");
+ return CELIX_FILE_IO_EXCEPTION;
+ }
+ lineContinued = true;
+ int newlen = strlen(lastLine) + len - 1;
+ char buf[newlen];
+ strcpy(buf, lastLine);
+ strncat(buf, lbuf+1, len - 1);
+
+ if (fpeek(file) == ' ') {
+ lastLine = strcpy(lastLine, buf);
+ continue;
+ }
+ value = (char *) malloc(strlen(buf) + 1);
+ value = strcpy(value, buf);
+ value[strlen(buf)] = '\0';
+ lastLine = NULL;
+ } else {
+ while (lbuf[i++] != ':') {
+ if (i >= len) {
+ printf("MANIFEST: Invalid header\n");
+ return CELIX_FILE_IO_EXCEPTION;
+ }
+ }
+ if (lbuf[i++] != ' ') {
+ printf("MANIFEST: Invalid header\n");
+ return CELIX_FILE_IO_EXCEPTION;
+ }
+ name = (char *) malloc((i + 1) - 2);
+ name = strncpy(name, lbuf, i - 2);
+ name[i - 2] = '\0';
+ if (fpeek(file) == ' ') {
+ int newlen = len - i;
+ lastLine = (char *) malloc(newlen + 1);
+ lastLine = strncpy(lastLine, lbuf+i, len -i);
+ continue;
+ }
+ value = (char *) malloc((len + 1) - i);
+ value = strncpy(value, lbuf+i, len - i);
+ value[len - i] = '\0';
+ }
+
+ if ((properties_set(properties, name, value) != NULL) && (!lineContinued)) {
+ printf("Duplicate entry: %s", name);
+ }
+ free(name);
+ free(value);
+ }
+
+ return CELIX_SUCCESS;
+}
+
Copied: incubator/celix/trunk/log_service/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/log_service/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_service/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/log_service/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/log_service/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/log_writer/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/log_writer/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_writer/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/log_writer/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/log_writer/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/calc_shell/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/calc_shell/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/calc_shell/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/calc_shell/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/discovery/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/discovery/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/discovery/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/example_endpoint/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_endpoint/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/example_endpoint/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/example_endpoint/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/example_proxy/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_proxy/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/example_proxy/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/example_proxy/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/example_service/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/example_service/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/example_service/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/example_service/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/remote_service_admin/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/remote_service_admin/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/remote_service_admin/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/remote_service_admin/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/remote_service_admin/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/remote_services/topology_manager/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/remote_services/topology_manager/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/topology_manager/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/remote_services/topology_manager/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/remote_services/topology_manager/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/shell/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/shell/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/shell/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/shell/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/shell/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)
Copied: incubator/celix/trunk/shell_tui/META-INF/MANIFEST.MF (from r1198848, incubator/celix/trunk/shell_tui/MANIFEST/MANIFEST.MF)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/shell_tui/META-INF/MANIFEST.MF?p2=incubator/celix/trunk/shell_tui/META-INF/MANIFEST.MF&p1=incubator/celix/trunk/shell_tui/MANIFEST/MANIFEST.MF&r1=1198848&r2=1203167&rev=1203167&view=diff
==============================================================================
(empty)