You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2017/11/20 20:33:19 UTC
[22/46] celix git commit: CELIX-417: Initial refactoring for CMake
usage
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/ioapi.c
----------------------------------------------------------------------
diff --git a/framework/private/src/ioapi.c b/framework/private/src/ioapi.c
deleted file mode 100644
index 49958f6..0000000
--- a/framework/private/src/ioapi.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* ioapi.h -- IO base function header for compress/uncompress .zip
- part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
-
- Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
-
- Modifications for Zip64 support
- Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
-
- For more info read MiniZip_info.txt
-
-*/
-
-#if (defined(_WIN32))
- #define _CRT_SECURE_NO_WARNINGS
-#endif
-
-#include "ioapi.h"
-
-voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
-{
- if (pfilefunc->zfile_func64.zopen64_file != NULL)
- return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
- else
- {
- return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode);
- }
-}
-
-long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
-{
- if (pfilefunc->zfile_func64.zseek64_file != NULL)
- return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
- else
- {
- uLong offsetTruncated = (uLong)offset;
- if (offsetTruncated != offset)
- return -1;
- else
- return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
- }
-}
-
-ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
-{
- if (pfilefunc->zfile_func64.zseek64_file != NULL)
- return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
- else
- {
- uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
- if ((tell_uLong) == ((uLong)-1))
- return (ZPOS64_T)-1;
- else
- return tell_uLong;
- }
-}
-
-void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
-{
- p_filefunc64_32->zfile_func64.zopen64_file = NULL;
- p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
- p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
- p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
- p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
- p_filefunc64_32->zfile_func64.ztell64_file = NULL;
- p_filefunc64_32->zfile_func64.zseek64_file = NULL;
- p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file;
- p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
- p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
- p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
- p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
-}
-
-
-
-static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
-static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
-static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
-static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
-static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
-
-static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
-{
- FILE* file = NULL;
- const char* mode_fopen = NULL;
- if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
- mode_fopen = "rb";
- else
- if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
- mode_fopen = "r+b";
- else
- if (mode & ZLIB_FILEFUNC_MODE_CREATE)
- mode_fopen = "wb";
-
- if ((filename!=NULL) && (mode_fopen != NULL))
- file = fopen(filename, mode_fopen);
- return file;
-}
-
-static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
-{
- FILE* file = NULL;
- const char* mode_fopen = NULL;
- if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
- mode_fopen = "rb";
- else
- if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
- mode_fopen = "r+b";
- else
- if (mode & ZLIB_FILEFUNC_MODE_CREATE)
- mode_fopen = "wb";
-
- if ((filename!=NULL) && (mode_fopen != NULL))
- file = fopen64((const char*)filename, mode_fopen);
- return file;
-}
-
-
-static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
-{
- uLong ret;
- ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
- return ret;
-}
-
-static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
-{
- uLong ret;
- ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
- return ret;
-}
-
-static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
-{
- long ret;
- ret = ftell((FILE *)stream);
- return ret;
-}
-
-
-static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
-{
- ZPOS64_T ret;
- ret = ftello64((FILE *)stream);
- return ret;
-}
-
-static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin)
-{
- int fseek_origin=0;
- long ret;
- switch (origin)
- {
- case ZLIB_FILEFUNC_SEEK_CUR :
- fseek_origin = SEEK_CUR;
- break;
- case ZLIB_FILEFUNC_SEEK_END :
- fseek_origin = SEEK_END;
- break;
- case ZLIB_FILEFUNC_SEEK_SET :
- fseek_origin = SEEK_SET;
- break;
- default: return -1;
- }
- ret = 0;
- if (fseek((FILE *)stream, offset, fseek_origin) != 0)
- ret = -1;
- return ret;
-}
-
-static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
-{
- int fseek_origin=0;
- long ret;
- switch (origin)
- {
- case ZLIB_FILEFUNC_SEEK_CUR :
- fseek_origin = SEEK_CUR;
- break;
- case ZLIB_FILEFUNC_SEEK_END :
- fseek_origin = SEEK_END;
- break;
- case ZLIB_FILEFUNC_SEEK_SET :
- fseek_origin = SEEK_SET;
- break;
- default: return -1;
- }
- ret = 0;
-
- if(fseeko64((FILE *)stream, offset, fseek_origin) != 0)
- ret = -1;
-
- return ret;
-}
-
-
-static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
-{
- int ret;
- ret = fclose((FILE *)stream);
- return ret;
-}
-
-static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
-{
- int ret;
- ret = ferror((FILE *)stream);
- return ret;
-}
-
-void fill_fopen_filefunc (pzlib_filefunc_def)
- zlib_filefunc_def* pzlib_filefunc_def;
-{
- pzlib_filefunc_def->zopen_file = fopen_file_func;
- pzlib_filefunc_def->zread_file = fread_file_func;
- pzlib_filefunc_def->zwrite_file = fwrite_file_func;
- pzlib_filefunc_def->ztell_file = ftell_file_func;
- pzlib_filefunc_def->zseek_file = fseek_file_func;
- pzlib_filefunc_def->zclose_file = fclose_file_func;
- pzlib_filefunc_def->zerror_file = ferror_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
-
-void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
-{
- pzlib_filefunc_def->zopen64_file = fopen64_file_func;
- pzlib_filefunc_def->zread_file = fread_file_func;
- pzlib_filefunc_def->zwrite_file = fwrite_file_func;
- pzlib_filefunc_def->ztell64_file = ftell64_file_func;
- pzlib_filefunc_def->zseek64_file = fseek64_file_func;
- pzlib_filefunc_def->zclose_file = fclose_file_func;
- pzlib_filefunc_def->zerror_file = ferror_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/iowin32.c
----------------------------------------------------------------------
diff --git a/framework/private/src/iowin32.c b/framework/private/src/iowin32.c
deleted file mode 100644
index 6a2a883..0000000
--- a/framework/private/src/iowin32.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/* iowin32.c -- IO base function header for compress/uncompress .zip
- Version 1.1, February 14h, 2010
- part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
-
- Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
-
- Modifications for Zip64 support
- Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
-
- For more info read MiniZip_info.txt
-
-*/
-
-#include <stdlib.h>
-
-#include "zlib.h"
-#include "ioapi.h"
-#include "iowin32.h"
-
-#ifndef INVALID_HANDLE_VALUE
-#define INVALID_HANDLE_VALUE (0xFFFFFFFF)
-#endif
-
-#ifndef INVALID_SET_FILE_POINTER
-#define INVALID_SET_FILE_POINTER ((DWORD)-1)
-#endif
-
-voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode));
-uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
-ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream));
-long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream));
-int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream));
-
-typedef struct
-{
- HANDLE hf;
- int error;
-} WIN32FILE_IOWIN;
-
-
-static void win32_translate_open_mode(int mode,
- DWORD* lpdwDesiredAccess,
- DWORD* lpdwCreationDisposition,
- DWORD* lpdwShareMode,
- DWORD* lpdwFlagsAndAttributes)
-{
- *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0;
-
- if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
- {
- *lpdwDesiredAccess = GENERIC_READ;
- *lpdwCreationDisposition = OPEN_EXISTING;
- *lpdwShareMode = FILE_SHARE_READ;
- }
- else if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
- {
- *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
- *lpdwCreationDisposition = OPEN_EXISTING;
- }
- else if (mode & ZLIB_FILEFUNC_MODE_CREATE)
- {
- *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
- *lpdwCreationDisposition = CREATE_ALWAYS;
- }
-}
-
-static voidpf win32_build_iowin(HANDLE hFile)
-{
- voidpf ret=NULL;
-
- if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE))
- {
- WIN32FILE_IOWIN w32fiow;
- w32fiow.hf = hFile;
- w32fiow.error = 0;
- ret = malloc(sizeof(WIN32FILE_IOWIN));
-
- if (ret==NULL)
- CloseHandle(hFile);
- else
- *((WIN32FILE_IOWIN*)ret) = w32fiow;
- }
- return ret;
-}
-
-voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode)
-{
- const char* mode_fopen = NULL;
- DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
- HANDLE hFile = NULL;
-
- win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
-
- if ((filename!=NULL) && (dwDesiredAccess != 0))
- hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
-
- return win32_build_iowin(hFile);
-}
-
-
-voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode)
-{
- const char* mode_fopen = NULL;
- DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
- HANDLE hFile = NULL;
-
- win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
-
- if ((filename!=NULL) && (dwDesiredAccess != 0))
- hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
-
- return win32_build_iowin(hFile);
-}
-
-
-voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode)
-{
- const char* mode_fopen = NULL;
- DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
- HANDLE hFile = NULL;
-
- win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
-
- if ((filename!=NULL) && (dwDesiredAccess != 0))
- hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
-
- return win32_build_iowin(hFile);
-}
-
-
-voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode)
-{
- const char* mode_fopen = NULL;
- DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
- HANDLE hFile = NULL;
-
- win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes);
-
- if ((filename!=NULL) && (dwDesiredAccess != 0))
- hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL);
-
- return win32_build_iowin(hFile);
-}
-
-
-uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size)
-{
- uLong ret=0;
- HANDLE hFile = NULL;
- if (stream!=NULL)
- hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
-
- if (hFile != NULL)
- {
- if (!ReadFile(hFile, buf, size, &ret, NULL))
- {
- DWORD dwErr = GetLastError();
- if (dwErr == ERROR_HANDLE_EOF)
- dwErr = 0;
- ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
- }
- }
-
- return ret;
-}
-
-
-uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size)
-{
- uLong ret=0;
- HANDLE hFile = NULL;
- if (stream!=NULL)
- hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
-
- if (hFile != NULL)
- {
- if (!WriteFile(hFile, buf, size, &ret, NULL))
- {
- DWORD dwErr = GetLastError();
- if (dwErr == ERROR_HANDLE_EOF)
- dwErr = 0;
- ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
- }
- }
-
- return ret;
-}
-
-long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
-{
- long ret=-1;
- HANDLE hFile = NULL;
- if (stream!=NULL)
- hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
- if (hFile != NULL)
- {
- DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT);
- if (dwSet == INVALID_SET_FILE_POINTER)
- {
- DWORD dwErr = GetLastError();
- ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
- ret = -1;
- }
- else
- ret=(long)dwSet;
- }
- return ret;
-}
-
-ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
-{
- ZPOS64_T ret= (ZPOS64_T)-1;
- HANDLE hFile = NULL;
- if (stream!=NULL)
- hFile = ((WIN32FILE_IOWIN*)stream)->hf;
-
- if (hFile)
- {
- LARGE_INTEGER li;
- li.QuadPart = 0;
- li.u.LowPart = SetFilePointer(hFile, li.u.LowPart, &li.u.HighPart, FILE_CURRENT);
- if ( (li.LowPart == 0xFFFFFFFF) && (GetLastError() != NO_ERROR))
- {
- DWORD dwErr = GetLastError();
- ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
- ret = (ZPOS64_T)-1;
- }
- else
- ret=li.QuadPart;
- }
- return ret;
-}
-
-
-long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin)
-{
- DWORD dwMoveMethod=0xFFFFFFFF;
- HANDLE hFile = NULL;
-
- long ret=-1;
- if (stream!=NULL)
- hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
- switch (origin)
- {
- case ZLIB_FILEFUNC_SEEK_CUR :
- dwMoveMethod = FILE_CURRENT;
- break;
- case ZLIB_FILEFUNC_SEEK_END :
- dwMoveMethod = FILE_END;
- break;
- case ZLIB_FILEFUNC_SEEK_SET :
- dwMoveMethod = FILE_BEGIN;
- break;
- default: return -1;
- }
-
- if (hFile != NULL)
- {
- DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod);
- if (dwSet == INVALID_SET_FILE_POINTER)
- {
- DWORD dwErr = GetLastError();
- ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
- ret = -1;
- }
- else
- ret=0;
- }
- return ret;
-}
-
-long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin)
-{
- DWORD dwMoveMethod=0xFFFFFFFF;
- HANDLE hFile = NULL;
- long ret=-1;
-
- if (stream!=NULL)
- hFile = ((WIN32FILE_IOWIN*)stream)->hf;
-
- switch (origin)
- {
- case ZLIB_FILEFUNC_SEEK_CUR :
- dwMoveMethod = FILE_CURRENT;
- break;
- case ZLIB_FILEFUNC_SEEK_END :
- dwMoveMethod = FILE_END;
- break;
- case ZLIB_FILEFUNC_SEEK_SET :
- dwMoveMethod = FILE_BEGIN;
- break;
- default: return -1;
- }
-
- if (hFile)
- {
- LARGE_INTEGER* li = (LARGE_INTEGER*)&offset;
- DWORD dwSet = SetFilePointer(hFile, li->u.LowPart, &li->u.HighPart, dwMoveMethod);
- if (dwSet == INVALID_SET_FILE_POINTER)
- {
- DWORD dwErr = GetLastError();
- ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
- ret = -1;
- }
- else
- ret=0;
- }
- return ret;
-}
-
-int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
-{
- int ret=-1;
-
- if (stream!=NULL)
- {
- HANDLE hFile;
- hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
- if (hFile != NULL)
- {
- CloseHandle(hFile);
- ret=0;
- }
- free(stream);
- }
- return ret;
-}
-
-int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream)
-{
- int ret=-1;
- if (stream!=NULL)
- {
- ret = ((WIN32FILE_IOWIN*)stream) -> error;
- }
- return ret;
-}
-
-void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
-{
- pzlib_filefunc_def->zopen_file = win32_open_file_func;
- pzlib_filefunc_def->zread_file = win32_read_file_func;
- pzlib_filefunc_def->zwrite_file = win32_write_file_func;
- pzlib_filefunc_def->ztell_file = win32_tell_file_func;
- pzlib_filefunc_def->zseek_file = win32_seek_file_func;
- pzlib_filefunc_def->zclose_file = win32_close_file_func;
- pzlib_filefunc_def->zerror_file = win32_error_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
-
-void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
-{
- pzlib_filefunc_def->zopen64_file = win32_open64_file_func;
- pzlib_filefunc_def->zread_file = win32_read_file_func;
- pzlib_filefunc_def->zwrite_file = win32_write_file_func;
- pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
- pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
- pzlib_filefunc_def->zclose_file = win32_close_file_func;
- pzlib_filefunc_def->zerror_file = win32_error_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
-
-
-void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
-{
- pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA;
- pzlib_filefunc_def->zread_file = win32_read_file_func;
- pzlib_filefunc_def->zwrite_file = win32_write_file_func;
- pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
- pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
- pzlib_filefunc_def->zclose_file = win32_close_file_func;
- pzlib_filefunc_def->zerror_file = win32_error_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
-
-
-void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def)
-{
- pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW;
- pzlib_filefunc_def->zread_file = win32_read_file_func;
- pzlib_filefunc_def->zwrite_file = win32_write_file_func;
- pzlib_filefunc_def->ztell64_file = win32_tell64_file_func;
- pzlib_filefunc_def->zseek64_file = win32_seek64_file_func;
- pzlib_filefunc_def->zclose_file = win32_close_file_func;
- pzlib_filefunc_def->zerror_file = win32_error_file_func;
- pzlib_filefunc_def->opaque = NULL;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/manifest.c
----------------------------------------------------------------------
diff --git a/framework/private/src/manifest.c b/framework/private/src/manifest.c
deleted file mode 100644
index 29b155a..0000000
--- a/framework/private/src/manifest.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * manifest.c
- *
- * \date Jul 5, 2010
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "celixbool.h"
-
-#include "manifest.h"
-#include "utils.h"
-#include "celix_log.h"
-
-int fpeek(FILE *stream);
-celix_status_t manifest_readAttributes(manifest_pt manifest, properties_pt properties, FILE *file);
-
-celix_status_t manifest_create(manifest_pt *manifest) {
- celix_status_t status = CELIX_SUCCESS;
-
- *manifest = malloc(sizeof(**manifest));
- if (!*manifest) {
- status = CELIX_ENOMEM;
- } else {
- (*manifest)->mainAttributes = properties_create();
- (*manifest)->attributes = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
- }
-
- framework_logIfError(logger, status, NULL, "Cannot create manifest");
-
- return status;
-}
-
-celix_status_t manifest_destroy(manifest_pt manifest) {
- if (manifest != NULL) {
- properties_destroy(manifest->mainAttributes);
- hashMap_destroy(manifest->attributes, true, false);
- manifest->mainAttributes = NULL;
- manifest->attributes = NULL;
- free(manifest);
- manifest = NULL;
- }
- return CELIX_SUCCESS;
-}
-
-celix_status_t manifest_createFromFile(const char *filename, manifest_pt *manifest) {
- celix_status_t status;
-
- status = manifest_create(manifest);
-
- if (status == CELIX_SUCCESS) {
- manifest_read(*manifest, filename);
- }
-
- framework_logIfError(logger, status, NULL, "Cannot create manifest from file");
-
- return status;
-}
-
-void manifest_clear(manifest_pt manifest) {
-
-}
-
-properties_pt manifest_getMainAttributes(manifest_pt manifest) {
- return manifest->mainAttributes;
-}
-
-celix_status_t manifest_getEntries(manifest_pt manifest, hash_map_pt *map) {
- *map = manifest->attributes;
- return CELIX_SUCCESS;
-}
-
-celix_status_t manifest_read(manifest_pt manifest, const char *filename) {
- celix_status_t status = CELIX_SUCCESS;
-
- FILE *file = fopen ( filename, "r" );
- if (file != NULL) {
- char lbuf[512];
- char name[512];
- bool skipEmptyLines = true;
- char lastline[512];
- memset(lbuf,0,512);
- memset(name,0,512);
- memset(lastline,0,512);
-
- manifest_readAttributes(manifest, manifest->mainAttributes, file);
-
- while (status==CELIX_SUCCESS && fgets(lbuf, sizeof(lbuf), file) != NULL) {
- properties_pt attributes;
- int len = strlen(lbuf);
-
- if (lbuf[--len] != '\n') {
- status = CELIX_FILE_IO_EXCEPTION;
- framework_logIfError(logger, status, NULL, "Manifest '%s' line too long", filename);
- break;
- }
- if (len > 0 && lbuf[len - 1] == '\r') {
- --len;
- }
- if (len == 0 && skipEmptyLines) {
- continue;
- }
- skipEmptyLines = false;
-
- if (strlen(name) == 0) {
-
- if ((tolower(lbuf[0]) == 'n') && (tolower(lbuf[1]) == 'a') &&
- (tolower(lbuf[2]) == 'm') && (tolower(lbuf[3]) == 'e') &&
- (lbuf[4] == ':') && (lbuf[5] == ' ')) {
- name[0] = '\0';
- strncpy(name, lbuf+6, len - 6);
- name[len - 6] = '\0';
- } else {
- status = CELIX_FILE_IO_EXCEPTION;
- framework_logIfError(logger, status, NULL, "Manifest '%s' invalid format", filename);
- break;
- }
-
- if (fpeek(file) == ' ') {
- int newlen = len - 6;
- lastline[0] = '\0';
- strncpy(lastline, lbuf+6, len - 6);
- lastline[newlen] = '\0';
- continue;
- }
- } else {
- int newlen = strlen(lastline) + len;
- char buf[512];
- buf[0] = '\0';
- strcpy(buf, lastline);
- strncat(buf, lbuf+1, len - 1);
- buf[newlen] = '\0';
-
- if (fpeek(file) == ' ') {
-// lastline = realloc(lastline, strlen(buf) + 1);
- lastline[0] = '\0';
- strcpy(lastline, buf);
- continue;
- }
- name[0] = '\0';
- strcpy(name, buf);
- name[strlen(buf)] = '\0';
- }
-
- attributes = hashMap_get(manifest->attributes, name);
- if (attributes == NULL) {
- attributes = properties_create();
- hashMap_put(manifest->attributes, strdup(name), attributes);
- }
- manifest_readAttributes(manifest, attributes, file);
-
- name[0] = '\0';
- skipEmptyLines = true;
- }
- fclose(file);
- } else {
- status = CELIX_FILE_IO_EXCEPTION;
- }
-
- framework_logIfError(logger, status, NULL, "Cannot read manifest");
-
- return status;
-}
-
-void manifest_write(manifest_pt manifest, const char * filename) {
-
-}
-
-const char* manifest_getValue(manifest_pt manifest, const char* name) {
- const char* val = properties_get(manifest->mainAttributes, name);
- bool isEmpty = utils_isStringEmptyOrNull(val);
- return isEmpty ? NULL : val;
-}
-
-int fpeek(FILE *stream) {
- int c;
- c = fgetc(stream);
- ungetc(c, stream);
- return c;
-}
-
-celix_status_t manifest_readAttributes(manifest_pt manifest, properties_pt properties, FILE *file) {
- char name[512]; memset(name,0,512);
- char value[512]; memset(value,0,512);
- char lastLine[512]; memset(lastLine,0,512);
- char lbuf[512]; memset(lbuf,0,512);
-
-
- while (fgets(lbuf, sizeof(lbuf), file ) != NULL ) {
- int 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) {
- break;
- }
-
- if (lbuf[0] == ' ') {
- char buf[512];
- buf[0] = '\0';
-
- // Line continued
- strcat(buf, lastLine);
- strncat(buf, lbuf+1, len - 1);
-
- if (fpeek(file) == ' ') {
-// lastLine = realloc(lastLine, strlen(buf) + 1);
- lastLine[0] = '\0';
- strcpy(lastLine, buf);
- continue;
- }
- value[0] = '\0';
- strcpy(value, buf);
- } else {
- int i = 0;
- 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[0] = '\0';
- strncpy(name, lbuf, i - 2);
- name[i - 2] = '\0';
- if (fpeek(file) == ' ') {
- int newlen = len - i;
- lastLine[0] = '\0';
- strncpy(lastLine, lbuf+i, len -i);
- lastLine[newlen] = '\0';
- continue;
- }
- value[0] = '\0';
- strncpy(value, lbuf+i, len - i);
- value[len - i] = '\0';
- }
-
- properties_set(properties, name, value);
- }
-
- return CELIX_SUCCESS;
-}
-
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/manifest_parser.c
----------------------------------------------------------------------
diff --git a/framework/private/src/manifest_parser.c b/framework/private/src/manifest_parser.c
deleted file mode 100644
index 07b40a8..0000000
--- a/framework/private/src/manifest_parser.c
+++ /dev/null
@@ -1,490 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * manifest_parser.c
- *
- * \date Jul 12, 2010
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <string.h>
-
-#include "utils.h"
-#include "constants.h"
-#include "manifest_parser.h"
-#include "capability.h"
-#include "requirement.h"
-#include "attribute.h"
-#include "hash_map.h"
-#include "celix_errno.h"
-#include "linked_list_iterator.h"
-#include "celix_log.h"
-
-//FIXME the manifest parser has no destroy function and as result contains memory leaks.
-
-struct manifestParser {
- module_pt owner;
- manifest_pt manifest;
-
- version_pt bundleVersion;
- char * bundleSymbolicName;
- linked_list_pt capabilities;
- linked_list_pt requirements;
-};
-
-static linked_list_pt manifestParser_parseImportHeader(const char* header);
-static linked_list_pt manifestParser_parseExportHeader(module_pt module, const char* header);
-static linked_list_pt manifestParser_parseDelimitedString(const char* value, const char* delim);
-static linked_list_pt manifestParser_parseStandardHeaderClause(const char* clauseString);
-static linked_list_pt manifestParser_parseStandardHeader(const char* header);
-
-celix_status_t manifestParser_create(module_pt owner, manifest_pt manifest, manifest_parser_pt *manifest_parser) {
- celix_status_t status;
- manifest_parser_pt parser;
-
- status = CELIX_SUCCESS;
- parser = (manifest_parser_pt) malloc(sizeof(*parser));
- if (parser) {
- const char * bundleVersion = NULL;
- const char * bundleSymbolicName = NULL;
- parser->manifest = manifest;
- parser->owner = owner;
-
- bundleVersion = manifest_getValue(manifest, OSGI_FRAMEWORK_BUNDLE_VERSION);
- if (bundleVersion != NULL) {
- parser->bundleVersion = NULL;
- version_createVersionFromString(bundleVersion, &parser->bundleVersion);
- } else {
- parser->bundleVersion = NULL;
- version_createEmptyVersion(&parser->bundleVersion);
- }
- bundleSymbolicName = manifest_getValue(manifest, OSGI_FRAMEWORK_BUNDLE_SYMBOLICNAME);
- if (bundleSymbolicName != NULL) {
- parser->bundleSymbolicName = (char*)bundleSymbolicName;
- }
-
- parser->capabilities = manifestParser_parseExportHeader(owner, manifest_getValue(manifest, OSGI_FRAMEWORK_EXPORT_LIBRARY));
- parser->requirements = manifestParser_parseImportHeader(manifest_getValue(manifest, OSGI_FRAMEWORK_IMPORT_LIBRARY));
-
- *manifest_parser = parser;
-
- status = CELIX_SUCCESS;
- } else {
- status = CELIX_ENOMEM;
- }
-
- framework_logIfError(logger, status, NULL, "Cannot create manifest parser");
-
- return status;
-}
-
-celix_status_t manifestParser_destroy(manifest_parser_pt mp) {
- linkedList_destroy(mp->capabilities);
- mp->capabilities = NULL;
- linkedList_destroy(mp->requirements);
- mp->requirements = NULL;
- mp->bundleSymbolicName = NULL;
- version_destroy(mp->bundleVersion);
- mp->bundleVersion = NULL;
- mp->manifest = NULL;
- mp->owner = NULL;
-
- free(mp);
-
- return CELIX_SUCCESS;
-}
-
-static linked_list_pt manifestParser_parseDelimitedString(const char * value, const char * delim) {
- linked_list_pt list;
-
- if (linkedList_create(&list) == CELIX_SUCCESS) {
- if (value != NULL) {
- int CHAR = 1;
- int DELIMITER = 2;
- int STARTQUOTE = 4;
- int ENDQUOTE = 8;
-
- char buffer[512];
- int expecting = (CHAR | DELIMITER | STARTQUOTE);
- unsigned int i;
-
- buffer[0] = '\0';
-
- for (i = 0; i < strlen(value); i++) {
- char c = value[i];
-
- bool isDelimiter = (strchr(delim, c) != NULL);
- bool isQuote = (c == '"');
-
- if (isDelimiter && ((expecting & DELIMITER) > 0)) {
- linkedList_addElement(list, strdup(buffer));
- buffer[0] = '\0';
- expecting = (CHAR | DELIMITER | STARTQUOTE);
- } else if (isQuote && ((expecting & STARTQUOTE) > 0)) {
- char tmp[2];
- tmp[0] = c;
- tmp[1] = '\0';
- strcat(buffer, tmp);
- expecting = CHAR | ENDQUOTE;
- } else if (isQuote && ((expecting & ENDQUOTE) > 0)) {
- char tmp[2];
- tmp[0] = c;
- tmp[1] = '\0';
- strcat(buffer, tmp);
- expecting = (CHAR | STARTQUOTE | DELIMITER);
- } else if ((expecting & CHAR) > 0) {
- char tmp[2];
- tmp[0] = c;
- tmp[1] = '\0';
- strcat(buffer, tmp);
- } else {
- linkedList_destroy(list);
- return NULL;
- }
- }
-
- if (strlen(buffer) > 0) {
- linkedList_addElement(list, strdup(utils_stringTrim(buffer)));
- }
- }
- }
-
- return list;
-}
-
-static linked_list_pt manifestParser_parseStandardHeaderClause(const char * clauseString) {
- linked_list_pt paths = NULL;
- linked_list_pt clause = NULL;
- linked_list_pt pieces = NULL;
-
- if(linkedList_create(&paths) != CELIX_SUCCESS){
- return NULL;
- }
-
- pieces = manifestParser_parseDelimitedString(clauseString, ";");
-
- if (pieces != NULL) {
- int pathCount = 0;
- int pieceIdx;
- hash_map_pt dirsMap = NULL;
- hash_map_pt attrsMap = NULL;
- char * sep;
-
- for (pieceIdx = 0; pieceIdx < linkedList_size(pieces); pieceIdx++) {
- char * piece = linkedList_get(pieces, pieceIdx);
- if (strchr(piece, '=') != NULL) {
- break;
- } else {
- linkedList_addElement(paths, strdup(piece));
- pathCount++;
- }
- }
-
- if (pathCount != 0) {
-
- dirsMap = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
- attrsMap = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL);
-
- bool failure = false;
- char *key = NULL;
- char *value = NULL;
-
- for (pieceIdx = pathCount; pieceIdx < linkedList_size(pieces) && !failure ; pieceIdx++) {
- char * sepPtr;
- char * DIRECTIVE_SEP = ":=";
- char * ATTRIBUTE_SEP = "=";
- char * piece = linkedList_get(pieces, pieceIdx);
- if ((sepPtr = strstr(piece, DIRECTIVE_SEP)) != NULL) {
- sep = DIRECTIVE_SEP;
- } else if ((sepPtr = strstr(piece, ATTRIBUTE_SEP)) != NULL) {
- sep = ATTRIBUTE_SEP;
- } else {
- failure=true;
- break;
- }
-
- if (strcmp(sep, DIRECTIVE_SEP) == 0) {
- // Not implemented
- }
- else {
-
- key = string_ndup(piece, sepPtr - piece);
- value = strdup(sepPtr+strlen(sep));
-
- if (value[0] == '"' && value[strlen(value) -1] == '"') {
- char * oldV = strdup(value);
- int len = strlen(oldV) - 2;
- value = (char *) realloc(value, (sizeof(char) * len+1));
- value[0] = '\0';
- value = strncpy(value, oldV+1, strlen(oldV) - 2);
- value[len] = '\0';
- //check if correct
- free(oldV);
- }
-
- attribute_pt attr = NULL;
- if (hashMap_containsKey(attrsMap, key)) {
- failure=true;
- break;
- }
-
- if (attribute_create(key, value, &attr) == CELIX_SUCCESS) {
- hashMap_put(attrsMap, key, attr);
- }
- }
- }
-
- if(linkedList_create(&clause) != CELIX_SUCCESS){
- failure=true;
- }
-
- if(failure){
- hashMap_destroy(dirsMap,false,false);
-
- hash_map_iterator_pt attrIter = hashMapIterator_create(attrsMap);
- while(hashMapIterator_hasNext(attrIter)){
- hash_map_entry_pt entry = hashMapIterator_nextEntry(attrIter);
- char *mkey = (char*)hashMapEntry_getKey(entry);
- attribute_pt mattr = (attribute_pt)hashMapEntry_getValue(entry);
- free(mkey);
- attribute_destroy(mattr);
- }
- hashMapIterator_destroy(attrIter);
- hashMap_destroy(attrsMap,false,false);
-
- if(key!=NULL){
- free(key);
- }
- if(value!=NULL){
- free(value);
- }
-
- linked_list_iterator_pt piter = linkedListIterator_create(paths,0);
- while(linkedListIterator_hasNext(piter)){
- free(linkedListIterator_next(piter));
- }
- linkedListIterator_destroy(piter);
- linkedList_destroy(paths);
-
- if(clause!=NULL){
- linkedList_destroy(clause);
- clause = NULL;
- }
- }
- else{
- linkedList_addElement(clause, paths);
- linkedList_addElement(clause, dirsMap);
- linkedList_addElement(clause, attrsMap);
- }
-
- }
- else{
- linkedList_destroy(paths);
- }
-
- for(int listIdx = 0; listIdx < linkedList_size(pieces); listIdx++){
- void * element = linkedList_get(pieces, listIdx);
- free(element);
- }
- linkedList_destroy(pieces);
- }
- else{
- linkedList_destroy(paths);
- }
-
- return clause;
-}
-
-static linked_list_pt manifestParser_parseStandardHeader(const char * header) {
- linked_list_pt clauseStrings = NULL;
- linked_list_pt completeList = NULL;
-
- if(header != NULL && strlen(header)==0){
- return NULL;
- }
-
- if (linkedList_create(&completeList) == CELIX_SUCCESS) {
- if(header!=NULL){
- char *hdr = strdup(header);
- clauseStrings = manifestParser_parseDelimitedString(hdr, ",");
- free(hdr);
- if (clauseStrings != NULL) {
- int i;
- for (i = 0; i < linkedList_size(clauseStrings); i++) {
- char *clauseString = (char *) linkedList_get(clauseStrings, i);
- linkedList_addElement(completeList, manifestParser_parseStandardHeaderClause(clauseString));
- free(clauseString);
- }
- linkedList_destroy(clauseStrings);
- }
- }
-
- }
-
- return completeList;
-}
-
-static linked_list_pt manifestParser_parseImportHeader(const char * header) {
- linked_list_pt clauses = NULL;
- linked_list_pt requirements = NULL;
- bool failure = false;
-
- int clauseIdx;
- linked_list_iterator_pt iter;
- clauses = manifestParser_parseStandardHeader(header);
- linkedList_create(&requirements);
-
- for (clauseIdx = 0; clauseIdx < linkedList_size(clauses) && !failure ; clauseIdx++) {
- linked_list_pt clause = linkedList_get(clauses, clauseIdx);
-
- linked_list_pt paths = linkedList_get(clause, 0);
- hash_map_pt directives = linkedList_get(clause, 1);
- hash_map_pt attributes = linkedList_get(clause, 2);
-
- int pathIdx;
- for (pathIdx = 0; pathIdx < linkedList_size(paths) && !failure ; pathIdx++) {
- attribute_pt name = NULL;
- requirement_pt req = NULL;
- char * path = (char *) linkedList_get(paths, pathIdx);
- if (strlen(path) == 0) {
- failure = true;
- break;
- }
-
- if (attribute_create(strdup("service"), path, &name) == CELIX_SUCCESS) {
- char *key = NULL;
- attribute_getKey(name, &key);
- hashMap_put(attributes, key, name);
- }
-
- requirement_create(directives, attributes, &req);
- linkedList_addElement(requirements, req);
- }
- }
-
- if(!failure){
- iter = linkedListIterator_create(clauses, 0);
- while(linkedListIterator_hasNext(iter)) {
- linked_list_pt clause = linkedListIterator_next(iter);
-
- linked_list_pt paths = linkedList_get(clause, 0);
- linkedList_destroy(paths);
-
- linkedListIterator_remove(iter);
- linkedList_destroy(clause);
- }
- linkedListIterator_destroy(iter);
- }
-
- linkedList_destroy(clauses);
-
- if(failure){
- linkedList_destroy(requirements);
- requirements = NULL;
- }
-
- return requirements;
-}
-
-static linked_list_pt manifestParser_parseExportHeader(module_pt module, const char * header) {
- linked_list_pt clauses = NULL;
- linked_list_pt capabilities = NULL;
- int clauseIdx;
- linked_list_iterator_pt iter;
- bool failure = false;
-
- clauses = manifestParser_parseStandardHeader(header);
- linkedList_create(&capabilities);
-
- for (clauseIdx = 0; clauseIdx < linkedList_size(clauses) && !failure ; clauseIdx++) {
- linked_list_pt clause = linkedList_get(clauses, clauseIdx);
-
- linked_list_pt paths = linkedList_get(clause, 0);
- hash_map_pt directives = linkedList_get(clause, 1);
- hash_map_pt attributes = linkedList_get(clause, 2);
-
- int pathIdx;
- for (pathIdx = 0; pathIdx < linkedList_size(paths) && !failure ; pathIdx++) {
- char * path = (char *) linkedList_get(paths, pathIdx);
- attribute_pt name = NULL;
- capability_pt cap = NULL;
- if (strlen(path) == 0) {
- failure=true;
- break;
- }
-
- if (attribute_create(strdup("service"), path, &name) == CELIX_SUCCESS) {
- char *key = NULL;
- attribute_getKey(name, &key);
- hashMap_put(attributes, key, name);
- }
-
- capability_create(module, directives, attributes, &cap);
- linkedList_addElement(capabilities, cap);
- }
- }
-
- if(!failure){
- iter = linkedListIterator_create(clauses, 0);
- while(linkedListIterator_hasNext(iter)) {
- linked_list_pt clause = linkedListIterator_next(iter);
-
- linked_list_pt paths = linkedList_get(clause, 0);
- linkedList_destroy(paths);
-
- linkedListIterator_remove(iter);
- linkedList_destroy(clause);
- }
- linkedListIterator_destroy(iter);
- }
-
- linkedList_destroy(clauses);
- if(failure){
- linkedList_destroy(capabilities);
- capabilities = NULL;
- }
-
- return capabilities;
-}
-
-celix_status_t manifestParser_getAndDuplicateSymbolicName(manifest_parser_pt parser, char **symbolicName) {
- *symbolicName = strndup(parser->bundleSymbolicName, 1024*10);
- return CELIX_SUCCESS;
-}
-
-celix_status_t manifestParser_getBundleVersion(manifest_parser_pt parser, version_pt *version) {
- return version_clone(parser->bundleVersion, version);
-}
-
-celix_status_t manifestParser_getCapabilities(manifest_parser_pt parser, linked_list_pt *capabilities) {
- celix_status_t status;
-
- status = linkedList_clone(parser->capabilities, capabilities);
-
- return status;
-}
-
-celix_status_t manifestParser_getRequirements(manifest_parser_pt parser, linked_list_pt *requirements) {
- celix_status_t status;
-
- status = linkedList_clone(parser->requirements, requirements);
-
- return status;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/miniunz.c
----------------------------------------------------------------------
diff --git a/framework/private/src/miniunz.c b/framework/private/src/miniunz.c
deleted file mode 100644
index c3a9bd1..0000000
--- a/framework/private/src/miniunz.c
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- miniunz.c
- Version 1.1, February 14h, 2010
- sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
-
- Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
-
- Modifications of Unzip for Zip64
- Copyright (C) 2007-2008 Even Rouault
-
- Modifications for Zip64 support on both zip and unzip
- Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
-*/
-
-#ifndef _WIN32
- #ifndef __USE_FILE_OFFSET64
- #define __USE_FILE_OFFSET64
- #endif
- #ifndef __USE_LARGEFILE64
- #define __USE_LARGEFILE64
- #endif
- #ifndef _LARGEFILE64_SOURCE
- #define _LARGEFILE64_SOURCE
- #endif
- #ifndef _FILE_OFFSET_BIT
- #define _FILE_OFFSET_BIT 64
- #endif
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-#include <fcntl.h>
-
-#ifdef _WIN32
-#include <sys/utime.h>
-#else
-#include <utime.h>
-#endif
-#include <sys/stat.h>
-
-#include "unzip.h"
-#include "archive.h"
-
-#define CASESENSITIVITY (0)
-#define WRITEBUFFERSIZE (8192)
-#define MAXFILENAME (256)
-
-#ifdef _WIN32
-#define USEWIN32IOAPI
-#include "iowin32.h"
-#include <direct.h>
-#endif
-/*
- mini unzip, demo of unzip package
-
- usage :
- Usage : miniunz [-exvlo] file.zip [file_to_extract] [-d extractdir]
-
- list the file in the zipfile, and print the content of FILE_ID.ZIP or README.TXT
- if it exists
-*/
-
-
-/* change_file_date : change the date/time of a file
- filename : the filename of the file where date/time must be modified
- dosdate : the new date at the MSDos format (4 bytes)
- tmu_date : the SAME new date at the tm_unz format */
-void change_file_date(const char *filename, uLong dosdate, tm_unz tmu_date)
-{
-#ifdef _WIN32
- HANDLE hFile;
- FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite;
-
- hFile = CreateFileA(filename,GENERIC_READ | GENERIC_WRITE,
- 0,NULL,OPEN_EXISTING,0,NULL);
- GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite);
- DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal);
- LocalFileTimeToFileTime(&ftLocal,&ftm);
- SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
- CloseHandle(hFile);
-#else
-#if defined(unix) || defined(__APPLE__)
- struct utimbuf ut;
- struct tm newdate;
- newdate.tm_sec = tmu_date.tm_sec;
- newdate.tm_min=tmu_date.tm_min;
- newdate.tm_hour=tmu_date.tm_hour;
- newdate.tm_mday=tmu_date.tm_mday;
- newdate.tm_mon=tmu_date.tm_mon;
- if (tmu_date.tm_year > 1900)
- newdate.tm_year=tmu_date.tm_year - 1900;
- else
- newdate.tm_year=tmu_date.tm_year ;
- newdate.tm_isdst=-1;
-
- ut.actime=ut.modtime=mktime(&newdate);
- utime(filename,&ut);
-#endif
-#endif
-}
-
-
-/* mymkdir and change_file_date are not 100 % portable
- As I don't know well Unix, I wait feedback for the unix portion */
-
-int mymkdir(const char *dirname)
-{
- int ret=0;
-#ifdef _WIN32
- ret = _mkdir(dirname);
-#else
-#if defined unix || defined __APPLE__
- ret = mkdir(dirname,0775);
-#endif
-#endif
- return ret;
-}
-
-int makedir (char *newdir)
-{
- char *buffer ;
- char *p;
- int len = (int)strlen(newdir);
-
- if (len <= 0)
- return 0;
-
- buffer = (char*)malloc(len+1);
- if (buffer==NULL)
- {
- printf("Error allocating memory\n");
- return UNZ_INTERNALERROR;
- }
- strcpy(buffer,newdir);
-
- if (buffer[len-1] == '/') {
- buffer[len-1] = '\0';
- }
- if (mymkdir(buffer) == 0)
- {
- free(buffer);
- return 1;
- }
-
- p = buffer+1;
- while (1)
- {
- char hold;
-
- while(*p && *p != '\\' && *p != '/')
- p++;
- hold = *p;
- *p = 0;
- if ((mymkdir(buffer) == -1) && (errno == ENOENT))
- {
- printf("couldn't create directory %s\n",buffer);
- free(buffer);
- return 0;
- }
- if (hold == 0)
- break;
- *p++ = hold;
- }
- free(buffer);
- return 1;
-}
-
-int do_extract_currentfile(unzFile uf, char * revisionRoot) {
- char filename_inzip[256];
- char* filename_withoutpath;
- char* p;
- int err=UNZ_OK;
- FILE *fout=NULL;
- void* buf;
- uInt size_buf;
-
- unz_file_info64 file_info;
- err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0);
-
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzGetCurrentFileInfo\n",err);
- return err;
- }
-
- size_buf = WRITEBUFFERSIZE;
- buf = (void*)malloc(size_buf);
- if (buf==NULL)
- {
- printf("Error allocating memory\n");
- return UNZ_INTERNALERROR;
- }
-
- p = filename_withoutpath = filename_inzip;
- while ((*p) != '\0')
- {
- if (((*p)=='/') || ((*p)=='\\'))
- filename_withoutpath = p+1;
- p++;
- }
-
- if ((*filename_withoutpath)=='\0') {
- char * dir;
- dir = (char *)malloc(strlen(revisionRoot) + strlen(filename_inzip) + 2);
- strcpy(dir, revisionRoot);
- strcat(dir, "/");
- strcat(dir, filename_inzip);
- mymkdir(dir);
- free(dir);
- }
- else
- {
- const char* write_filename;
- int skip=0;
- int length;
- char * fWFN;
- write_filename = filename_inzip;
-
- length = strlen(write_filename) + strlen(revisionRoot) + 2;
- fWFN = (char *)malloc(length);
- strcpy(fWFN, revisionRoot);
- strcat(fWFN, "/");
- strcat(fWFN, write_filename);
-
- err = unzOpenCurrentFile(uf);
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzOpenCurrentFilePassword\n",err);
- }
-
- if ((skip==0) && (err==UNZ_OK))
- {
- fout=fopen64(fWFN,"wb");
-
- /* some zipfile don't contain directory alone before file */
- if ((fout==NULL) && (filename_withoutpath!=(char*)filename_inzip))
- {
- char * dir;
- int length;
- char c=*(filename_withoutpath-1);
- *(filename_withoutpath-1)='\0';
- length = strlen(write_filename) + strlen(revisionRoot) + 2;
- dir = (char *)malloc(length);
- strcpy(dir, revisionRoot);
- strcat(dir, "/");
- strcat(dir, write_filename);
- makedir(dir);
- *(filename_withoutpath-1)=c;
- free(dir);
- fout=fopen64(fWFN,"wb");
- }
-
- if (fout==NULL)
- {
- printf("error opening %s\n",write_filename);
- }
- }
-
- if (fout!=NULL)
- {
- do
- {
- err = unzReadCurrentFile(uf,buf,size_buf);
- if (err<0)
- {
- printf("error %d with zipfile in unzReadCurrentFile\n",err);
- break;
- }
- if (err>0)
- if (fwrite(buf,err,1,fout)!=1)
- {
- printf("error in writing extracted file\n");
- err=UNZ_ERRNO;
- break;
- }
- }
- while (err>0);
- if (fout)
- fclose(fout);
-
- if (err==0)
- change_file_date(fWFN,file_info.dosDate,
- file_info.tmu_date);
- }
-
- if (err==UNZ_OK)
- {
- err = unzCloseCurrentFile (uf);
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzCloseCurrentFile\n",err);
- }
- }
- else
- unzCloseCurrentFile(uf); /* don't lose the error */
-
- free(fWFN);
- }
-
- free(buf);
- return err;
-}
-
-
-int do_extract(unzFile uf, char * revisionRoot) {
- uLong i;
- unz_global_info64 gi;
- int err;
-
- err = unzGetGlobalInfo64(uf,&gi);
- if (err!=UNZ_OK)
- printf("error %d with zipfile in unzGetGlobalInfo \n",err);
-
- for (i=0;i<gi.number_entry;i++)
- {
- if (do_extract_currentfile(uf, revisionRoot) != UNZ_OK)
- break;
-
- if ((i+1)<gi.number_entry)
- {
- err = unzGoToNextFile(uf);
- if (err!=UNZ_OK)
- {
- printf("error %d with zipfile in unzGoToNextFile\n",err);
- break;
- }
- }
- }
-
- return 0;
-}
-
-celix_status_t extractBundle(const char* bundleName, const char* revisionRoot) {
- celix_status_t status = CELIX_SUCCESS;
- char filename_try[MAXFILENAME+16] = "";
- unzFile uf=NULL;
-
- if (bundleName!=NULL)
- {
-
-# ifdef USEWIN32IOAPI
- zlib_filefunc64_def ffunc;
-# endif
-
- strncpy(filename_try, bundleName,MAXFILENAME-1);
- /* strncpy doesnt append the trailing NULL, of the string is too long. */
- filename_try[ MAXFILENAME ] = '\0';
-
-# ifdef USEWIN32IOAPI
- fill_win32_filefunc64A(&ffunc);
- uf = unzOpen2_64(bundleName,&ffunc);
-# else
- uf = unzOpen64(bundleName);
-# endif
- if (uf==NULL)
- {
- strcat(filename_try,".zip");
-# ifdef USEWIN32IOAPI
- uf = unzOpen2_64(filename_try,&ffunc);
-# else
- uf = unzOpen64(filename_try);
-# endif
- }
- }
-
- if (uf==NULL)
- {
- printf("Cannot open %s or %s.zip\n",bundleName,bundleName);
- status = CELIX_FILE_IO_EXCEPTION;
- } else {
- if (do_extract(uf, (char*)revisionRoot) != 0) {
- status = CELIX_FILE_IO_EXCEPTION;
- }
-
- unzClose(uf);
- }
-
- return status;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/module.c
----------------------------------------------------------------------
diff --git a/framework/private/src/module.c b/framework/private/src/module.c
deleted file mode 100644
index e81a1ee..0000000
--- a/framework/private/src/module.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * module.c
- *
- * \date Jul 19, 2010
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "module.h"
-#include "manifest_parser.h"
-#include "linked_list_iterator.h"
-
-struct module {
- linked_list_pt capabilities;
- linked_list_pt requirements;
- linked_list_pt wires;
-
- array_list_pt dependentImporters;
-
- version_pt version;
- char * symbolicName;
- bool resolved;
-
- manifest_pt headerMap;
- char * id;
-
- struct bundle * bundle;
-};
-
-module_pt module_create(manifest_pt headerMap, const char * moduleId, bundle_pt bundle) {
- module_pt module = NULL;
- manifest_parser_pt mp;
-
- if (headerMap != NULL) {
- module = (module_pt) malloc(sizeof(*module));
- module->headerMap = headerMap;
- module->id = strdup(moduleId);
- module->bundle = bundle;
- module->resolved = false;
-
- module->dependentImporters = NULL;
- arrayList_create(&module->dependentImporters);
-
- if (manifestParser_create(module, headerMap, &mp) == CELIX_SUCCESS) {
- module->symbolicName = NULL;
- manifestParser_getAndDuplicateSymbolicName(mp, &module->symbolicName);
-
- module->version = NULL;
- manifestParser_getBundleVersion(mp, &module->version);
-
- module->capabilities = NULL;
- manifestParser_getCapabilities(mp, &module->capabilities);
-
- module->requirements = NULL;
- manifestParser_getRequirements(mp, &module->requirements);
-
- module->wires = NULL;
-
- manifestParser_destroy(mp);
- }
- }
-
- return module;
-}
-
-module_pt module_createFrameworkModule(bundle_pt bundle) {
- module_pt module;
-
- module = (module_pt) malloc(sizeof(*module));
- if (module) {
- module->id = strdup("0");
- module->symbolicName = strdup("framework");
- module->version = NULL;
- version_createVersion(1, 0, 0, "", &module->version);
-
- linkedList_create(&module->capabilities);
- linkedList_create(&module->requirements);
- module->dependentImporters = NULL;
- arrayList_create(&module->dependentImporters);
- module->wires = NULL;
- module->headerMap = NULL;
- module->resolved = false;
- module->bundle = bundle;
- }
- return module;
-}
-
-void module_destroy(module_pt module) {
- arrayList_destroy(module->dependentImporters);
-
- version_destroy(module->version);
-
- if (module->wires != NULL) {
- linked_list_iterator_pt iter = linkedListIterator_create(module->wires, 0);
- while (linkedListIterator_hasNext(iter)) {
- wire_pt next = linkedListIterator_next(iter);
- linkedListIterator_remove(iter);
- wire_destroy(next);
- }
- linkedListIterator_destroy(iter);
- linkedList_destroy(module->wires);
- }
-
- if (module->requirements != NULL) {
- linked_list_iterator_pt iter = linkedListIterator_create(module->requirements, 0);
- while (linkedListIterator_hasNext(iter)) {
- requirement_pt next = linkedListIterator_next(iter);
- linkedListIterator_remove(iter);
- requirement_destroy(next);
- }
- linkedListIterator_destroy(iter);
- linkedList_destroy(module->requirements);
- }
-
- if (module->capabilities != NULL) {
- linked_list_iterator_pt iter = linkedListIterator_create(module->capabilities, 0);
- while (linkedListIterator_hasNext(iter)) {
- capability_pt next = linkedListIterator_next(iter);
- linkedListIterator_remove(iter);
- capability_destroy(next);
- }
- linkedListIterator_destroy(iter);
- linkedList_destroy(module->capabilities);
- }
-
- module->headerMap = NULL;
-
- free(module->id);
- free(module->symbolicName);
- free(module);
-}
-
-wire_pt module_getWire(module_pt module, const char * serviceName) {
- wire_pt wire = NULL;
- if (module->wires != NULL) {
- linked_list_iterator_pt iterator = linkedListIterator_create(module->wires, 0);
- while (linkedListIterator_hasNext(iterator)) {
- const char* name;
- wire_pt next = linkedListIterator_next(iterator);
- capability_pt cap = NULL;
- wire_getCapability(next, &cap);
- capability_getServiceName(cap, &name);
- if (strcasecmp(name, serviceName) == 0) {
- wire = next;
- }
- }
- linkedListIterator_destroy(iterator);
- }
- return wire;
-}
-
-version_pt module_getVersion(module_pt module) {
- return module->version;
-}
-
-celix_status_t module_getSymbolicName(module_pt module, const char **symbolicName) {
- celix_status_t status = CELIX_SUCCESS;
-
- if (module == NULL) {
- status = CELIX_ILLEGAL_ARGUMENT;
- } else {
- *symbolicName = module->symbolicName;
- }
-
- return status;
-}
-
-char * module_getId(module_pt module) {
- return module->id;
-}
-
-linked_list_pt module_getWires(module_pt module) {
- return module->wires;
-}
-
-void module_setWires(module_pt module, linked_list_pt wires) {
- int i = 0;
- for (i = 0; (module->wires != NULL) && (i < linkedList_size(module->wires)); i++) {
- wire_pt wire = (wire_pt) linkedList_get(module->wires, i);
- module_pt exporter = NULL;
- wire_getExporter(wire, &exporter);
- module_removeDependentImporter(exporter, module);
- }
-
- if (module->wires != NULL) {
- linked_list_iterator_pt iter = linkedListIterator_create(module->wires, 0);
- while (linkedListIterator_hasNext(iter)) {
- wire_pt next = linkedListIterator_next(iter);
- linkedListIterator_remove(iter);
- wire_destroy(next);
- }
- linkedListIterator_destroy(iter);
- linkedList_destroy(module->wires);
- }
-
- module->wires = wires;
-
- for (i = 0; (module->wires != NULL) && (i < linkedList_size(module->wires)); i++) {
- wire_pt wire = (wire_pt) linkedList_get(module->wires, i);
- module_pt exporter = NULL;
- wire_getExporter(wire, &exporter);
- module_addDependentImporter(exporter, module);
- }
-}
-
-bool module_isResolved(module_pt module) {
- return module->resolved;
-}
-
-void module_setResolved(module_pt module) {
- module->resolved = true;
-}
-
-bundle_pt module_getBundle(module_pt module) {
- return module->bundle;
-}
-
-linked_list_pt module_getRequirements(module_pt module) {
- return module->requirements;
-}
-
-linked_list_pt module_getCapabilities(module_pt module) {
- return module->capabilities;
-}
-
-array_list_pt module_getDependentImporters(module_pt module) {
- return module->dependentImporters;
-}
-
-void module_addDependentImporter(module_pt module, module_pt importer) {
- if (!arrayList_contains(module->dependentImporters, importer)) {
- arrayList_add(module->dependentImporters, importer);
- }
-}
-
-void module_removeDependentImporter(module_pt module, module_pt importer) {
- arrayList_removeElement(module->dependentImporters, importer);
-}
-
-//----------------------------------------------------
-//TODO add implementation (functions not implemented but already exported)
-array_list_pt module_getDependentRequirers(module_pt module) {
- return NULL;
-}
-
-void module_addDependentRequirer(module_pt module, module_pt requirer) {
-}
-
-void module_removeDependentRequirer(module_pt module, module_pt requirer) {
-}
-//----------------------------------------------------
-
-array_list_pt module_getDependents(module_pt module) {
- array_list_pt dependents = NULL;
- arrayList_create(&dependents);
-
- arrayList_addAll(dependents, module->dependentImporters);
-
- return dependents;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/requirement.c
----------------------------------------------------------------------
diff --git a/framework/private/src/requirement.c b/framework/private/src/requirement.c
deleted file mode 100644
index 7ce585c..0000000
--- a/framework/private/src/requirement.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * requirement.c
- *
- * \date Jul 12, 2010
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-
-#include "requirement_private.h"
-#include "version_range.h"
-#include "attribute.h"
-#include "celix_log.h"
-
-celix_status_t requirement_create(hash_map_pt directives, hash_map_pt attributes, requirement_pt *requirement) {
- celix_status_t status;
-
- *requirement = (requirement_pt) malloc(sizeof(**requirement));
- if (!*requirement) {
- status = CELIX_ENOMEM;
- } else {
- attribute_pt serviceAttribute = NULL;
- attribute_pt versionAttribute = NULL;
-
- (*requirement)->attributes = attributes;
- (*requirement)->directives = directives;
- (*requirement)->versionRange = NULL;
-
- serviceAttribute = (attribute_pt) hashMap_get(attributes, "service");
- status = attribute_getValue(serviceAttribute, &(*requirement)->targetName);
- if (status == CELIX_SUCCESS) {
- versionAttribute = (attribute_pt) hashMap_get(attributes, "version");
- if (versionAttribute != NULL) {
- char *versionStr = NULL;
- attribute_getValue(versionAttribute, &versionStr);
- status = versionRange_parse(versionStr, &(*requirement)->versionRange);
- } else {
- status = versionRange_createInfiniteVersionRange(&(*requirement)->versionRange);
- }
- }
- }
-
- framework_logIfError(logger, status, NULL, "Cannot create requirement");
-
- return status;
-}
-
-celix_status_t requirement_destroy(requirement_pt requirement) {
- hash_map_iterator_pt attrIter = hashMapIterator_create(requirement->attributes);
- while (hashMapIterator_hasNext(attrIter)) {
- attribute_pt attr = hashMapIterator_nextValue(attrIter);
- hashMapIterator_remove(attrIter);
- attribute_destroy(attr);
- }
- hashMapIterator_destroy(attrIter);
- hashMap_destroy(requirement->attributes, false, false);
- hashMap_destroy(requirement->directives, false, false);
-
- requirement->attributes = NULL;
- requirement->directives = NULL;
-
- versionRange_destroy(requirement->versionRange);
- requirement->versionRange = NULL;
-
- free(requirement);
-
- return CELIX_SUCCESS;
-}
-
-celix_status_t requirement_getVersionRange(requirement_pt requirement, version_range_pt *range) {
- *range = requirement->versionRange;
- return CELIX_SUCCESS;
-}
-
-celix_status_t requirement_getTargetName(requirement_pt requirement, const char **targetName) {
- *targetName = requirement->targetName;
- return CELIX_SUCCESS;
-}
-
-celix_status_t requirement_isSatisfied(requirement_pt requirement, capability_pt capability, bool *inRange) {
- celix_status_t status;
- version_pt version = NULL;
- version_range_pt range = NULL;
-
- status = capability_getVersion(capability, &version);
- if (status == CELIX_SUCCESS) {
- status = requirement_getVersionRange(requirement, &range);
- if (status == CELIX_SUCCESS) {
- status = versionRange_isInRange(range, version, inRange);
- }
- }
-
- framework_logIfError(logger, status, NULL, "Cannot check if requirement is satisfied");
-
- return status;
-}
http://git-wip-us.apache.org/repos/asf/celix/blob/a1c30887/framework/private/src/resolver.c
----------------------------------------------------------------------
diff --git a/framework/private/src/resolver.c b/framework/private/src/resolver.c
deleted file mode 100644
index 256eff5..0000000
--- a/framework/private/src/resolver.c
+++ /dev/null
@@ -1,495 +0,0 @@
-/**
- *Licensed to the Apache Software Foundation (ASF) under one
- *or more contributor license agreements. See the NOTICE file
- *distributed with this work for additional information
- *regarding copyright ownership. The ASF licenses this file
- *to you under the Apache License, Version 2.0 (the
- *"License"); you may not use this file except in compliance
- *with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- *Unless required by applicable law or agreed to in writing,
- *software distributed under the License is distributed on an
- *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- *specific language governing permissions and limitations
- *under the License.
- */
-/*
- * resolver.c
- *
- * \date Jul 13, 2010
- * \author <a href="mailto:dev@celix.apache.org">Apache Celix Project Team</a>
- * \copyright Apache License, Version 2.0
- */
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "resolver.h"
-#include "linked_list_iterator.h"
-#include "bundle.h"
-#include "celix_log.h"
-
-struct capabilityList {
- char * serviceName;
- linked_list_pt capabilities;
-};
-
-typedef struct capabilityList * capability_list_pt;
-
-struct candidateSet {
- module_pt module;
- requirement_pt requirement;
- linked_list_pt candidates;
-};
-
-typedef struct candidateSet * candidate_set_pt;
-
-// List containing module_ts
-linked_list_pt m_modules = NULL;
-// List containing capability_t_LISTs
-linked_list_pt m_unresolvedServices = NULL;
-// List containing capability_t_LISTs
-linked_list_pt m_resolvedServices = NULL;
-
-int resolver_populateCandidatesMap(hash_map_pt candidatesMap, module_pt targetModule);
-capability_list_pt resolver_getCapabilityList(linked_list_pt list, const char* name);
-void resolver_removeInvalidCandidate(module_pt module, hash_map_pt candidates, linked_list_pt invalid);
-linked_list_pt resolver_populateWireMap(hash_map_pt candidates, module_pt importer, linked_list_pt wireMap);
-
-linked_list_pt resolver_resolve(module_pt root) {
- hash_map_pt candidatesMap = NULL;
- linked_list_pt wireMap = NULL;
- linked_list_pt resolved = NULL;
- hash_map_iterator_pt iter = NULL;
-
- if (module_isResolved(root)) {
- return NULL;
- }
-
- candidatesMap = hashMap_create(NULL, NULL, NULL, NULL);
-
- if (resolver_populateCandidatesMap(candidatesMap, root) != 0) {
- hash_map_iterator_pt iter = hashMapIterator_create(candidatesMap);
- while (hashMapIterator_hasNext(iter)) {
- hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
- linked_list_pt value = hashMapEntry_getValue(entry);
- hashMapIterator_remove(iter);
- if (value != NULL) {
- linked_list_iterator_pt candSetIter = linkedListIterator_create(value, 0);
- while (linkedListIterator_hasNext(candSetIter)) {
- candidate_set_pt set = linkedListIterator_next(candSetIter);
- linkedList_destroy(set->candidates);
- free(set);
- linkedListIterator_remove(candSetIter);
- }
- linkedListIterator_destroy(candSetIter);
- linkedList_destroy(value);
- }
- }
- hashMapIterator_destroy(iter);
- hashMap_destroy(candidatesMap, false, false);
- return NULL;
- }
-
- linkedList_create(&wireMap);
- resolved = resolver_populateWireMap(candidatesMap, root, wireMap);
- iter = hashMapIterator_create(candidatesMap);
- while (hashMapIterator_hasNext(iter)) {
- hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
- linked_list_pt value = hashMapEntry_getValue(entry);
- hashMapIterator_remove(iter);
- if (value != NULL) {
- linked_list_iterator_pt candSetIter = linkedListIterator_create(value, 0);
- while (linkedListIterator_hasNext(candSetIter)) {
- candidate_set_pt set = linkedListIterator_next(candSetIter);
- linkedList_destroy(set->candidates);
- free(set);
- linkedListIterator_remove(candSetIter);
- }
- linkedListIterator_destroy(candSetIter);
- linkedList_destroy(value);
- }
- }
- hashMapIterator_destroy(iter);
- hashMap_destroy(candidatesMap, false, false);
- return resolved;
-}
-
-int resolver_populateCandidatesMap(hash_map_pt candidatesMap, module_pt targetModule) {
- linked_list_pt candSetList;
- linked_list_pt candidates;
- linked_list_pt invalid;
-
- if (hashMap_containsKey(candidatesMap, targetModule)) {
- return 0;
- }
-
- hashMap_put(candidatesMap, targetModule, NULL);
-
- if (linkedList_create(&candSetList) == CELIX_SUCCESS) {
- int i;
- for (i = 0; i < linkedList_size(module_getRequirements(targetModule)); i++) {
- capability_list_pt capList;
- requirement_pt req;
- const char *targetName = NULL;
- req = (requirement_pt) linkedList_get(module_getRequirements(targetModule), i);
- requirement_getTargetName(req, &targetName);
- capList = resolver_getCapabilityList(m_resolvedServices, targetName);
-
- if (linkedList_create(&candidates) == CELIX_SUCCESS) {
- int c;
- for (c = 0; (capList != NULL) && (c < linkedList_size(capList->capabilities)); c++) {
- capability_pt cap = (capability_pt) linkedList_get(capList->capabilities, c);
- bool satisfied = false;
- requirement_isSatisfied(req, cap, &satisfied);
- if (satisfied) {
- linkedList_addElement(candidates, cap);
- }
- }
- capList = resolver_getCapabilityList(m_unresolvedServices, targetName);
- for (c = 0; (capList != NULL) && (c < linkedList_size(capList->capabilities)); c++) {
- capability_pt cap = (capability_pt) linkedList_get(capList->capabilities, c);
- bool satisfied = false;
- requirement_isSatisfied(req, cap, &satisfied);
- if (satisfied) {
- linkedList_addElement(candidates, cap);
- }
- }
-
- if (linkedList_size(candidates) > 0) {
- linked_list_iterator_pt iterator = NULL;
- for (iterator = linkedListIterator_create(candidates, 0); linkedListIterator_hasNext(iterator);) {
- capability_pt candidate = (capability_pt) linkedListIterator_next(iterator);
- module_pt module = NULL;
- capability_getModule(candidate, &module);
- if (!module_isResolved(module)) {
- if (resolver_populateCandidatesMap(candidatesMap, module) != 0) {
- linkedListIterator_remove(iterator);
- }
- }
- }
- linkedListIterator_destroy(iterator);
- }
-
- if (linkedList_size(candidates) == 0) {
- if (linkedList_create(&invalid) == CELIX_SUCCESS) {
- const char *name = NULL;
- resolver_removeInvalidCandidate(targetModule, candidatesMap, invalid);
-
- module_getSymbolicName(targetModule, &name);
-
- linkedList_destroy(invalid);
- fw_log(logger, OSGI_FRAMEWORK_LOG_INFO, "Unable to resolve: %s, %s\n", name, targetName);
- }
- linkedList_destroy(candidates);
- linkedList_destroy(candSetList);
- return -1;
- } else if (linkedList_size(candidates) > 0) {
- candidate_set_pt cs = (candidate_set_pt) malloc(sizeof(*cs));
- cs->candidates = candidates;
- cs->module = targetModule;
- cs->requirement = req;
- linkedList_addElement(candSetList, cs);
- }
-
- }
- }
- hashMap_put(candidatesMap, targetModule, candSetList);
- }
- return 0;
-}
-
-void resolver_removeInvalidCandidate(module_pt invalidModule, hash_map_pt candidates, linked_list_pt invalid) {
- hash_map_iterator_pt iterator;
- hashMap_remove(candidates, invalidModule);
-
- for (iterator = hashMapIterator_create(candidates); hashMapIterator_hasNext(iterator);) {
- hash_map_entry_pt entry = hashMapIterator_nextEntry(iterator);
- linked_list_pt candSetList = (linked_list_pt) hashMapEntry_getValue(entry);
- if (candSetList != NULL) {
- linked_list_iterator_pt itCandSetList;
- for (itCandSetList = linkedListIterator_create(candSetList, 0); linkedListIterator_hasNext(itCandSetList);) {
- candidate_set_pt set = (candidate_set_pt) linkedListIterator_next(itCandSetList);
- linked_list_iterator_pt candIter;
- for (candIter = linkedListIterator_create(set->candidates, 0); linkedListIterator_hasNext(candIter);) {
- capability_pt candCap = (capability_pt) linkedListIterator_next(candIter);
- module_pt module = NULL;
- capability_getModule(candCap, &module);
- if (module == invalidModule) {
- linkedListIterator_remove(candIter);
- if (linkedList_size(set->candidates) == 0) {
- linkedListIterator_remove(itCandSetList);
- if (module != invalidModule && linkedList_contains(invalid, module)) {
- linkedList_addElement(invalid, module);
- }
- }
- break;
- }
- }
- linkedListIterator_destroy(candIter);
- }
- linkedListIterator_destroy(itCandSetList);
- }
- }
- hashMapIterator_destroy(iterator);
-
- if (linkedList_size(invalid) > 0) {
- while (!linkedList_isEmpty(invalid)) {
- module_pt m = (module_pt) linkedList_removeIndex(invalid, 0);
- resolver_removeInvalidCandidate(m, candidates, invalid);
- }
- }
-}
-
-void resolver_addModule(module_pt module) {
-
- if (m_modules == NULL) {
- linkedList_create(&m_modules);
- linkedList_create(&m_unresolvedServices);
- linkedList_create(&m_resolvedServices);
- }
-
- if (m_modules != NULL && m_unresolvedServices != NULL) {
- int i;
-
- linkedList_addElement(m_modules, module);
-
- for (i = 0; i < linkedList_size(module_getCapabilities(module)); i++) {
- const char *serviceName = NULL;
- capability_list_pt list = NULL;
- capability_pt cap;
-
- cap = (capability_pt) linkedList_get(module_getCapabilities(module), i);
- capability_getServiceName(cap, &serviceName);
- list = resolver_getCapabilityList(m_unresolvedServices, serviceName);
- if (list == NULL) {
- list = (capability_list_pt) malloc(sizeof(*list));
- if (list != NULL) {
- list->serviceName = strdup(serviceName);
- if (linkedList_create(&list->capabilities) == CELIX_SUCCESS) {
- linkedList_addElement(m_unresolvedServices, list);
- }
- else{
- free(list->serviceName);
- free(list);
- list=NULL;
- }
- }
- }
- if(list != NULL){
- linkedList_addElement(list->capabilities, cap);
- }
- }
- }
-}
-
-void resolver_removeModule(module_pt module) {
- linked_list_pt caps = NULL;
- linkedList_removeElement(m_modules, module);
- caps = module_getCapabilities(module);
- if (caps != NULL) {
- int i = 0;
- for (i = 0; i < linkedList_size(caps); i++) {
- capability_pt cap = (capability_pt) linkedList_get(caps, i);
- const char *serviceName = NULL;
- capability_list_pt list;
- capability_getServiceName(cap, &serviceName);
- list = resolver_getCapabilityList(m_unresolvedServices, serviceName);
- if (list != NULL) {
- linkedList_removeElement(list->capabilities, cap);
-
- if (linkedList_isEmpty(list->capabilities)) {
- linkedList_removeElement(m_unresolvedServices, list);
- linkedList_destroy(list->capabilities);
- free(list->serviceName);
- free(list);
- }
- }
- list = resolver_getCapabilityList(m_resolvedServices, serviceName);
- if (list != NULL) {
- linkedList_removeElement(list->capabilities, cap);
-
- if (linkedList_isEmpty(list->capabilities)) {
- linkedList_removeElement(m_resolvedServices, list);
- linkedList_destroy(list->capabilities);
- free(list->serviceName);
- free(list);
- }
- }
- }
- }
- if (linkedList_isEmpty(m_modules)) {
- linkedList_destroy(m_modules);
- m_modules = NULL;
-
- if (!linkedList_isEmpty(m_unresolvedServices)) {
- // #TODO: Something is wrong, not all modules have been removed from the resolver
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Unexpected entries in unresolved module list");
- }
- linkedList_destroy(m_unresolvedServices);
- m_unresolvedServices = NULL;
- if (!linkedList_isEmpty(m_resolvedServices)) {
- // #TODO: Something is wrong, not all modules have been removed from the resolver
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "Unexpected entries in resolved module list");
- }
- linkedList_destroy(m_resolvedServices);
- m_resolvedServices = NULL;
- }
-}
-
-void resolver_moduleResolved(module_pt module) {
-
- if (module_isResolved(module)) {
- linked_list_pt capsCopy = NULL;
-
- if (linkedList_create(&capsCopy) == CELIX_SUCCESS) {
- linked_list_pt wires = NULL;
- int capIdx;
-
- for (capIdx = 0; (module_getCapabilities(module) != NULL) && (capIdx < linkedList_size(module_getCapabilities(module))); capIdx++) {
- capability_pt cap = (capability_pt) linkedList_get(module_getCapabilities(module), capIdx);
- const char *serviceName = NULL;
- capability_list_pt list;
- capability_getServiceName(cap, &serviceName);
- list = resolver_getCapabilityList(m_unresolvedServices, serviceName);
- if(list != NULL){
- linkedList_removeElement(list->capabilities, cap);
- }
-
- linkedList_addElement(capsCopy, cap);
- }
-
- wires = module_getWires(module);
- for (capIdx = 0; (capsCopy != NULL) && (capIdx < linkedList_size(capsCopy)); capIdx++) {
- capability_pt cap = linkedList_get(capsCopy, capIdx);
-
- int wireIdx = 0;
- for (wireIdx = 0; (wires != NULL) && (wireIdx < linkedList_size(wires)); wireIdx++) {
- wire_pt wire = (wire_pt) linkedList_get(wires, wireIdx);
- requirement_pt req = NULL;
- bool satisfied = false;
- wire_getRequirement(wire, &req);
- requirement_isSatisfied(req, cap, &satisfied);
- if (satisfied) {
- linkedList_set(capsCopy, capIdx, NULL);
- break;
- }
- }
- }
-
- for (capIdx = 0; (capsCopy != NULL) && (capIdx < linkedList_size(capsCopy)); capIdx++) {
- capability_pt cap = linkedList_get(capsCopy, capIdx);
-
- if (cap != NULL) {
- const char *serviceName = NULL;
- capability_list_pt list = NULL;
- capability_getServiceName(cap, &serviceName);
-
- list = resolver_getCapabilityList(m_resolvedServices, serviceName);
- if (list == NULL) {
- list = (capability_list_pt) malloc(sizeof(*list));
- if (list != NULL) {
- list->serviceName = strdup(serviceName);
- if (linkedList_create(&list->capabilities) == CELIX_SUCCESS) {
- linkedList_addElement(m_resolvedServices, list);
- }
- else{
- free(list->serviceName);
- free(list);
- list=NULL;
- }
- }
- }
- if(list != NULL){
- linkedList_addElement(list->capabilities, cap);
- }
- }
- }
-
- linkedList_destroy(capsCopy);
- }
- }
-}
-
-capability_list_pt resolver_getCapabilityList(linked_list_pt list, const char * name) {
- capability_list_pt capabilityList = NULL;
- linked_list_iterator_pt iterator = linkedListIterator_create(list, 0);
- while (linkedListIterator_hasNext(iterator)) {
- capability_list_pt services = (capability_list_pt) linkedListIterator_next(iterator);
- if (strcmp(services->serviceName, name) == 0) {
- capabilityList = services;
- break;
- }
- }
- linkedListIterator_destroy(iterator);
- return capabilityList;
-}
-
-linked_list_pt resolver_populateWireMap(hash_map_pt candidates, module_pt importer, linked_list_pt wireMap) {
- linked_list_pt serviceWires;
-
- if (candidates && importer && wireMap) {
- linked_list_pt candSetList = NULL;
- bool resolved = false;
-
- if (module_isResolved(importer)) {
- // already resolved
- resolved = true;
- }
- if (!resolved) {
- bool self = false;
- linked_list_iterator_pt wit = linkedListIterator_create(wireMap, 0);
- while (linkedListIterator_hasNext(wit)) {
- importer_wires_pt iw = linkedListIterator_next(wit);
- if (iw->importer == importer) {
- // Do not resolve yourself
- self = true;
- break;
- }
- }
- linkedListIterator_destroy(wit);
-
- if (!self) {
- candSetList = (linked_list_pt) hashMap_get(candidates, importer);
-
- if (linkedList_create(&serviceWires) == CELIX_SUCCESS) {
-// if (linkedList_create(&emptyWires) == CELIX_SUCCESS) {
- int candSetIdx = 0;
-
- // hashMap_put(wireMap, importer, emptyWires);
-
- const char *mname = NULL;
- module_getSymbolicName(importer, &mname);
-
- importer_wires_pt importerWires = malloc(sizeof(*importerWires));
- importerWires->importer = importer;
- importerWires->wires = NULL;
- linkedList_addElement(wireMap, importerWires);
-
- for (candSetIdx = 0; candSetIdx < linkedList_size(candSetList); candSetIdx++) {
- candidate_set_pt cs = (candidate_set_pt) linkedList_get(candSetList, candSetIdx);
-
- module_pt module = NULL;
- capability_getModule(((capability_pt) linkedList_get(cs->candidates, 0)), &module);
- if (importer != module) {
- wire_pt wire = NULL;
- wire_create(importer, cs->requirement, module, ((capability_pt) linkedList_get(cs->candidates, 0)), &wire);
- linkedList_addElement(serviceWires, wire);
- }
-
- wireMap = resolver_populateWireMap(candidates, module, wireMap);
- }
-
- importerWires->wires = serviceWires;
- // hashMap_put(wireMap, importer, serviceWires);
-// }
- }
- }
- }
- }
-
- return wireMap;
-}