diff --git a/src/macosx/Info.plist b/src/macosx/Info.plist index 6be9e38..44975c7 100644 --- a/src/macosx/Info.plist +++ b/src/macosx/Info.plist @@ -3,7 +3,9 @@ CFBundleExecutable - xulrunner + kiwix + CFBundleDisplayName + Kiwix CFBundleGetInfoString 0.9 rc3 CFBundleIconFile @@ -11,15 +13,17 @@ CFBundleIdentifier org.kiwix.kiwix CFBundleInfoDictionaryVersion - 0.1 + 6.0 CFBundleName Kiwix CFBundlePackageType APPL CFBundleShortVersionString - 0.9 + 0.9 rc3 + CFBundleDevelopmentRegion + English CFBundleSignature - ???? + KIWI CFBundleURLTypes @@ -34,7 +38,7 @@ CFBundleVersion - 1.0 + 1.0.1 CFBundleDocumentTypes @@ -53,5 +57,45 @@ Viewer + LSApplicationCategoryType + public.app-category.productivity + LSMinimumSystemVersion + 10.6.0 + LSMinimumSystemVersionByArchitecture + + i386 + 10.6.0 + x86_64 + 10.6.0 + + NSSupportsAutomaticGraphicsSwitching + + NSPrincipalClass + GeckoNSApplication + UTExportedTypeDeclarations + + + UTTypeIdentifier + org.kiwix.kiwix.zim + UTTypeReferenceURL + http://www.kiwix.org + UTTypeDescription + Kiwix ZIM File + UTTypeConformsTo + + public.data + public.content + + UTTypeTagSpecification + + com.apple.ostype + TBMZ + public.filename-extension + + zim + + + + - + \ No newline at end of file diff --git a/src/macosx/InfoPlist.strings b/src/macosx/InfoPlist.strings new file mode 100644 index 0000000..2375798 --- /dev/null +++ b/src/macosx/InfoPlist.strings @@ -0,0 +1,3 @@ + +CFBundleName = "Kiwix"; +NSHumanReadableCopyright = "Copyright © 2006-2014 Contributors."; diff --git a/src/macosx/PkgInfo b/src/macosx/PkgInfo new file mode 100644 index 0000000..255ca26 --- /dev/null +++ b/src/macosx/PkgInfo @@ -0,0 +1 @@ +APPLMOZM \ No newline at end of file diff --git a/src/macosx/cleanup_rpath.py b/src/macosx/cleanup_rpath.py index 5c167eb..1315f36 100755 --- a/src/macosx/cleanup_rpath.py +++ b/src/macosx/cleanup_rpath.py @@ -10,8 +10,8 @@ MODE_BINARY = 2 MODE_LIBRARY = 3 MODES = {'c': MODE_COMPONENT, - 'b': MODE_BINARY, - 'l': MODE_LIBRARY} + 'b': MODE_BINARY, + 'l': MODE_LIBRARY} is_library = False is_component = False @@ -19,85 +19,88 @@ is_binary = False def usage(): - print(u"Usage: %s MODE component/path.dylib" % sys.argv[0]) - print(u" MODE is c: component or b: binary or l: library") + print(u"Usage: %s MODE component/path.dylib" % sys.argv[0]) + print(u" MODE is c: component or b: binary or l: library") if len(sys.argv) < 3: - usage() - exit(0) + usage() + exit(0) component = sys.argv[-1] mode = MODES.get(sys.argv[-2].lower()) if not mode: - usage() - exit(1) + usage() + exit(1) # mode switchers if mode == MODE_COMPONENT: - is_component = True + is_component = True elif mode == MODE_LIBRARY: - is_library = True + is_library = True else: - is_binary = True + is_binary = True if not os.path.exists(component): - print(u"Unable to access component at: %s" % component) - exit(1) + print(u"Unable to access component at: %s" % component) + exit(1) # we'll also allow binaries to be fixed. # if (is_library or is_component) and not component.endswith('.dylib'): - print(u"%s is not a dylib component" % component) - exit(1) + print(u"%s is not a dylib component" % component) + exit(1) print("Fixing %s..." % component) basename = os.path.basename(component) try: - name, ext = basename.rsplit('.', 1) + name, ext = basename.rsplit('.', 1) except ValueError: - name = basename - ext = '' + name = basename + ext = '' libname = u'lib%s%s.0.dylib' % (name[0].upper(), name[1:]) # change ID if component to match new name/path if is_component: - os.system('install_name_tool -id %s %s' % (basename, component)) + os.system('install_name_tool -id %s %s' % (basename, component)) # run otool to get a list of deps. otool = subprocess.Popen(['otool', '-L', component], stdout=subprocess.PIPE) otool_out, otool_err = otool.communicate() for line in otool_out.split('\n'): - if ('executable_path' in line - or 'libSystem' in line - or 'libstdc++' in line - or ':' in line - or not len(line) - or 'aria2c' in basename): - continue - path, junk = line.strip().split(' (', 1) - # erroneous_links.append(path) - - _basename = os.path.basename(path).strip() - - if _basename == basename: - continue - - # is it a library link? - match = re.match(r'lib([a-z\_\-\d]+)([\.?\d]*)\.dylib', _basename) - if match: - print("match: %s" % match.groups()[0]) - if is_component: - newpath = u'@executable_path/../Frameworks/lib%s.dylib' % match.groups()[0] - elif is_binary: - newpath = u'@executable_path/../../Frameworks/lib%s.dylib' % match.groups()[0] - else: - newpath = u'@loader_path/lib%s.dylib' % match.groups()[0] - - print('install_name_tool -change %s %s %s' % (path, newpath, component)) - os.system('install_name_tool -change %s %s %s' % (path, newpath, component)) - continue - - print('\tUnmatched: %s' % path) \ No newline at end of file + if ('executable_path' in line + or 'libSystem' in line + or ':' in line + or not len(line) + or 'aria2c' in basename): + continue + path, junk = line.strip().split(' (', 1) + # erroneous_links.append(path) + + _basename = os.path.basename(path).strip() + + if _basename == basename: + continue + + # is it a library link? + match = re.match(r'lib([a-z\_\-\d\+]+)([\.?\d]*)\.dylib', _basename) + if match: + print("match: %s" % match.groups()[0]) + if 'libstdc++' in line or 'libgcc' in line: + newpath = u'/usr/lib/lib%s%s.dylib' % (match.groups()[0], match.groups()[1]) + elif is_component: + # newpath = u'@executable_path/../Frameworks/lib%s.dylib' % match.groups()[0] + newpath = u'@executable_path/lib%s.dylib' % match.groups()[0] + elif is_binary: + # newpath = u'@executable_path/../../Frameworks/lib%s.dylib' % match.groups()[0] + newpath = u'@executable_path/../lib%s.dylib' % match.groups()[0] + else: + newpath = u'@loader_path/lib%s.dylib' % match.groups()[0] + + print('install_name_tool -change %s %s %s' % (path, newpath, component)) + os.system('install_name_tool -change %s %s %s' % (path, newpath, component)) + continue + + print('\tUnmatched: %s' % path) \ No newline at end of file diff --git a/src/server/kiwix-serve.cpp b/src/server/kiwix-serve.cpp index 9d6ef94..8175a78 100644 --- a/src/server/kiwix-serve.cpp +++ b/src/server/kiwix-serve.cpp @@ -273,8 +273,10 @@ static int accessHandlerCallback(void *cls, /* Display the content of a ZIM article */ else if (reader != NULL) { pthread_mutex_lock(&readerLock); + std::string baseUrl; + try { - found = reader->getContentByDecodedUrl(urlStr, content, contentLength, mimeType); + found = reader->getContentByDecodedUrl(urlStr, content, contentLength, mimeType, baseUrl); if (found) { if (isVerbose()) { cout << "Found " << urlStr << endl; @@ -300,6 +302,9 @@ static int accessHandlerCallback(void *cls, "(href|src)(=[\"|\']{0,1}/)([A-Z|\\-])/"); content = replaceRegex(content, "$1$2" + humanReadableBookId + "/$3/", "(@import[ ]+)([\"|\']{0,1}/)([A-Z|\\-])/"); + content = replaceRegex(content, + "", + ""); } else if (mimeType.find("text/css") != string::npos) { content = replaceRegex(content, "$1$2" + humanReadableBookId + "/$3/", "(url|URL)(\\([\"|\']{0,1}/)([A-Z|\\-])/");