Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  lo.patch   Sprache: unbekannt

 
--- onlineupdate/source/libmar/tool/mar.c
+++ onlineupdate/source/libmar/tool/mar.c
@@ -14,7 +14,9 @@
 #  include <windows.h>
 #  include <direct.h>
 #  define chdir _chdir
+#  define PATH_MAX MAX_PATH
 #else
+#  include <limits.h>
 #  include <unistd.h>
 #endif
 
@@ -39,7 +41,7 @@
   printf("Create a MAR file:\n");
   printf(
       "  mar -H MARChannelID -V ProductVersion [-C workingDir] "
-      "-c archive.mar [files...]\n");
+      "-c archive.mar [files...|-f files]\n");
 
   printf("Extract a MAR file:\n");
   printf("  mar [-C workingDir] -x archive.mar\n");
@@ -244,6 +246,8 @@
 
   switch (argv[1][1]) {
     case 'c': {
+      int numfiles;
+      char** files;
       struct ProductInformationBlock infoBlock;
       if (!productVersion) {
         fprintf(stderr,
@@ -256,9 +260,61 @@
                 "<mar-channel-id>`).\n");
         return -1;
       }
+      if (argc == 5 && !strcmp(argv[3], "-f")) {
+        FILE* in;
+        in = fopen(argv[4], "r");
+        if (!in) {
+          fprintf(stderr,
+                  "ERROR: Cannot open file `%s` for reading.\n", argv[4]);
+          return -1;
+        }
+        numfiles = 0;
+        files = malloc(sizeof(char*) * 10000); /*TODO*/
+        if (!files) {
+          fprintf(stderr,
+                  "ERROR: Cannot allocate memory");
+          return -1;
+        }
+        for (;;) {
+          char buf[PATH_MAX + 1];
+          size_t len;
+          if (!fgets(buf, PATH_MAX + 1, in)) {
+            if (feof(in)) {
+              break;
+            }
+            fprintf(stderr,
+                    "ERROR: Cannot read from file `%s`.\n", argv[4]);
+            return -1;
+          }
+          len = strlen(buf);
+          if (len != 0 && buf[len - 1] == '\n') {
+            buf[len - 1] = '\0';
+          } else if (!feof(in)) {
+            fprintf(stderr,
+                    "ERROR: Too long line in file `%s`.\n", argv[4]);
+            return -1;
+          }
+          if (numfiles == 10000) { /*TODO*/
+            fprintf(stderr,
+                    "ERROR: Too many lines in file `%s`.\n", argv[4]);
+            return -1;
+          }
+          files[numfiles] = strdup(buf);
+          if (!files[numfiles]) {
+            fprintf(stderr,
+                    "ERROR: Cannot allocate memory");
+            return -1;
+          }
+          ++numfiles;
+        }
+        fclose(in);
+      } else {
+        numfiles = argc - 3;
+        files = argv + 3;
+      }
       infoBlock.MARChannelID = MARChannelID;
       infoBlock.productVersion = productVersion;
-      return mar_create(argv[2], argc - 3, argv + 3, &infoBlock);
+      return mar_create(argv[2], numfiles, files, &infoBlock);
     }
     case 'i': {
       if (!productVersion) {
--- onlineupdate/source/service/serviceinstall.cpp
+++ onlineupdate/source/service/serviceinstall.cpp
@@ -25,7 +25,7 @@
 
 // This uninstall key is defined originally in maintenanceservice_installer.nsi
 #define MAINT_UNINSTALL_KEY                                                    \
-  L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MozillaMaintenan" \
+  L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\LibreOfficeMaintenan" \
   L"ceService"
 
 static BOOL UpdateUninstallerVersionString(LPWSTR versionString) {
@@ -201,7 +201,7 @@
   size_t currentServicePathLen = wcslen(currentServicePath);
   bool doesServiceHaveCorrectPath =
       currentServicePathLen > 2 &&
-      !wcsstr(currentServicePath, L"maintenanceservice_tmp.exe") &&
+      !wcsstr(currentServicePath, L"update_service_tmp.exe") &&
       currentServicePath[0] == L'\"' &&
       currentServicePath[currentServicePathLen - 1] == L'\"';
 
@@ -222,7 +222,7 @@
     LOG_WARN(("Couldn't remove file spec.  (%lu)", GetLastError()));
     return FALSE;
   }
-  if (!PathAppendSafe(fixedPath, L"maintenanceservice.exe")) {
+  if (!PathAppendSafe(fixedPath, L"update_service.exe")) {
     LOG_WARN(("Couldn't append file spec.  (%lu)", GetLastError()));
     return FALSE;
   }
@@ -561,7 +561,7 @@
 
   // The service can be in a stopped state but the exe still in use
   // so make sure the process is really gone before proceeding
-  WaitForProcessExit(L"maintenanceservice.exe", 30);
+  WaitForProcessExit(L"update_service.exe", 30);
   LOG(("Done waiting for service stop, last service state: %lu", lastState));
 
   return lastState == SERVICE_STOPPED;
--- onlineupdate/source/service/serviceinstall.h
+++ onlineupdate/source/service/serviceinstall.h
@@ -4,7 +4,7 @@
 
 #include "readstrings.h"
 
-#define SVC_DISPLAY_NAME L"Mozilla Maintenance Service"
+#define SVC_DISPLAY_NAME L"LibreOffice Maintenance Service"
 
 enum SvcInstallAction { UpgradeSvc, InstallSvc, ForceInstallSvc };
 BOOL SvcInstall(SvcInstallAction action);
--- onlineupdate/source/update/common/pathhash.cpp
+++ onlineupdate/source/update/common/pathhash.cpp
@@ -119,7 +119,7 @@
   delete[] lowercasePath;
 
   LPCWSTR baseRegPath =
-      L"SOFTWARE\\Mozilla\\"
+      L"SOFTWARE\\LibreOffice\\"
       L"MaintenanceService\\";
   wcsncpy(registryPath, baseRegPath, MAX_PATH);
   BinaryDataToHexString(hash, hashSize, registryPath + wcslen(baseRegPath));
--- onlineupdate/source/update/common/updatehelper.cpp
+++ onlineupdate/source/update/common/updatehelper.cpp
@@ -78,7 +78,7 @@
   wcsncpy(outBuf, progFilesX86, MAX_PATH + 1);
   CoTaskMemFree(progFilesX86);
 
-  if (!PathAppendSafe(outBuf, L"Mozilla Maintenance Service")) {
+  if (!PathAppendSafe(outBuf, L"LibreOffice Maintenance Service")) {
     return FALSE;
   }
 
@@ -311,7 +311,7 @@
   // Obtain the temp path of the maintenance service binary
   WCHAR tmpService[MAX_PATH + 1] = {L'\0'};
   if (!PathGetSiblingFilePath(tmpService, serviceConfig.lpBinaryPathName,
-                              L"maintenanceservice_tmp.exe")) {
+                              L"update_service_tmp.exe")) {
     return FALSE;
   }
 
@@ -322,7 +322,7 @@
   // Get the new maintenance service path from the install dir
   WCHAR newMaintServicePath[MAX_PATH + 1] = {L'\0'};
   wcsncpy(newMaintServicePath, installDir, MAX_PATH);
-  PathAppendSafe(newMaintServicePath, L"maintenanceservice.exe");
+  PathAppendSafe(newMaintServicePath, L"update_service.exe");
 
   // Copy the temp file in alongside the maintenace service.
   // This is a requirement for maintenance service upgrades.
@@ -429,7 +429,7 @@
   // 2) The command being executed, which is "software-update"
   // 3) The path to updater.exe (from argv[0])
   LPCWSTR* updaterServiceArgv = new LPCWSTR[argc + 2];
-  updaterServiceArgv[0] = L"MozillaMaintenance";
+  updaterServiceArgv[0] = L"LibreOfficeMaintenance";
   updaterServiceArgv[1] = L"software-update";
 
   for (int i = 0; i < argc; ++i) {
--- onlineupdate/source/update/common/updatehelper.h
+++ onlineupdate/source/update/common/updatehelper.h
@@ -24,9 +24,9 @@
 #define PATCH_DIR_PATH L"\\updates\\0"
 
 #ifdef MOZ_MAINTENANCE_SERVICE
-#  define SVC_NAME L"MozillaMaintenance"
+#  define SVC_NAME L"LibreOfficeMaintenance"
 
-#  define BASE_SERVICE_REG_KEY L"SOFTWARE\\Mozilla\\MaintenanceService"
+#  define BASE_SERVICE_REG_KEY L"SOFTWARE\\LibreOffice\\MaintenanceService"
 
 // The test only fallback key, as its name implies, is only present on machines
 // that will use automated tests.  Since automated tests always run from a
--- onlineupdate/source/service/workmonitor.cpp
+++ onlineupdate/source/service/workmonitor.cpp
@@ -328,7 +328,7 @@
   // The installation dir that we are installing to is installDir.
   WCHAR installDirUpdater[MAX_PATH + 1] = {L'\0'};
   wcsncpy(installDirUpdater, installDir, MAX_PATH);
-  if (!PathAppendSafe(installDirUpdater, L"updater.exe")) {
+  if (!PathAppendSafe(installDirUpdater, L"program\\updater.exe")) {
     LOG_WARN(("Install directory updater could not be determined."));
     return false;
   }
@@ -746,7 +746,7 @@
 
     WCHAR installDirUpdater[MAX_PATH + 1] = {L'\0'};
     wcsncpy(installDirUpdater, installDir, MAX_PATH);
-    if (!PathAppendSafe(installDirUpdater, L"updater.exe")) {
+    if (!PathAppendSafe(installDirUpdater, L"program\\updater.exe")) {
       LOG_WARN(("Install directory updater could not be determined."));
       result = FALSE;
     }
--- onlineupdate/source/update/updater/updater.cpp
+++ onlineupdate/source/update/updater/updater.cpp
@@ -4174,6 +4174,10 @@
         NS_tmkdir(gDeleteDirPath, 0755);
       }
     }
+
+    if (_setmaxstdio(8192) == -1) {
+        LOG(("_setmaxstdio failed"));
+    }
 #endif /* XP_WIN */
 
     // Run update process on a background thread. ShowProgressUI may return
--- tools/update-packaging/common.sh
+++ tools/update-packaging/common.sh
@@ -76,17 +76,8 @@
     forced=
   fi
 
-  is_extension=$(echo "$f" | grep -c 'distribution/extensions/.*/')
-  if [ $is_extension = "1" ]; then
-    # Use the subdirectory of the extensions folder as the file to test
-    # before performing this add instruction.
-    testdir=$(echo "$f" | sed 's/\(.*distribution\/extensions\/[^\/]*\)\/.*/\1/')
-    verbose_notice "     add-if \"$testdir\" \"$f\""
-    echo "add-if \"$testdir\" \"$f\"" >> "$filev3"
-  else
-    verbose_notice "        add \"$f\"$forced"
-    echo "add \"$f\"" >> "$filev3"
-  fi
+  verbose_notice "     add-if \"$f\" \"$f\"$forced"
+  echo "add-if \"$f\" \"$f\"" >> "$filev3"
 }
 
 check_for_add_if_not_update() {
@@ -113,17 +104,8 @@
   f="$1"
   filev3="$2"
 
-  is_extension=$(echo "$f" | grep -c 'distribution/extensions/.*/')
-  if [ $is_extension = "1" ]; then
-    # Use the subdirectory of the extensions folder as the file to test
-    # before performing this add instruction.
-    testdir=$(echo "$f" | sed 's/\(.*distribution\/extensions\/[^\/]*\)\/.*/\1/')
-    verbose_notice "   patch-if \"$testdir\" \"$f.patch\" \"$f\""
-    echo "patch-if \"$testdir\" \"$f.patch\" \"$f\"" >> "$filev3"
-  else
-    verbose_notice "      patch \"$f.patch\" \"$f\""
-    echo "patch \"$f.patch\" \"$f\"" >> "$filev3"
-  fi
+  verbose_notice "   patch-if \"$f\" \"$f.patch\" \"$f\""
+  echo "patch-if \"$f\" \"$f.patch\" \"$f\"" >> "$filev3"
 }
 
 append_remove_instructions() {
--- tools/update-packaging/make_full_update.sh
+++ tools/update-packaging/make_full_update.sh
@@ -53,9 +53,10 @@
 fi
 workdir="$targetdir.work"
 updatemanifestv3="$workdir/updatev3.manifest"
-targetfiles="updatev3.manifest"
 
 mkdir -p "$workdir"
+
+printf 'updatev3.manifest\n' >"$workdir/files.txt"
 
 # Generate a list of all files in the target directory.
 pushd "$targetdir"
@@ -66,7 +67,6 @@
 if [ ! -f "precomplete" ]; then
   if [ ! -f "Contents/Resources/precomplete" ]; then
     notice "precomplete file is missing!"
-    exit 1
   fi
 fi
 
@@ -99,7 +99,7 @@
   $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force --stdout "$targetdir/$f" > "$workdir/$f"
   copy_perm "$targetdir/$f" "$workdir/$f"
 
-  targetfiles="$targetfiles \"$f\""
+  printf '%s\n' "$f" >>"$workdir/files.txt"
 done
 
 # Append remove instructions for any dead files.
@@ -110,7 +110,7 @@
 $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force "$updatemanifestv3" && mv -f "$updatemanifestv3.xz" "$updatemanifestv3"
 
 mar_command="$mar_command -C \"$workdir\" -c output.mar"
-eval "$mar_command $targetfiles"
+eval "$mar_command -f $workdir/files.txt"
 mv -f "$workdir/output.mar" "$archive"
 
 # cleanup
--- tools/update-packaging/make_incremental_update.sh
+++ tools/update-packaging/make_incremental_update.sh
@@ -112,9 +112,10 @@
 fi
 workdir="$(mktemp -d)"
 updatemanifestv3="$workdir/updatev3.manifest"
-archivefiles="updatev3.manifest"
 
 mkdir -p "$workdir"
+
+printf 'updatev3.manifest\n' >"$workdir/files.txt"
 
 # Generate a list of all files in the target directory.
 pushd "$olddir"
@@ -135,7 +136,6 @@
 if [ ! -f "precomplete" ]; then
   if [ ! -f "Contents/Resources/precomplete" ]; then
     notice "precomplete file is missing!"
-    exit 1
   fi
 fi
 
@@ -170,7 +170,7 @@
       $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force --stdout "$newdir/$f" > "$workdir/$f"
       copy_perm "$newdir/$f" "$workdir/$f"
       make_add_if_not_instruction "$f" "$updatemanifestv3"
-      archivefiles="$archivefiles \"$f\""
+      printf '%s\n' "$f" >>"$workdir/files.txt"
       continue 1
     fi
 
@@ -180,7 +180,7 @@
       $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force --stdout "$newdir/$f" > "$workdir/$f"
       copy_perm "$newdir/$f" "$workdir/$f"
       make_add_instruction "$f" "$updatemanifestv3" 1
-      archivefiles="$archivefiles \"$f\""
+      printf '%s\n' "$f" >>"$workdir/files.txt"
       continue 1
     fi
 
@@ -227,11 +227,11 @@
         make_patch_instruction "$f" "$updatemanifestv3"
         mv -f "$patchfile" "$workdir/$f.patch"
         rm -f "$workdir/$f"
-        archivefiles="$archivefiles \"$f.patch\""
+        printf '%s\n' "$f.patch" >>"$workdir/files.txt"
       else
         make_add_instruction "$f" "$updatemanifestv3"
         rm -f "$patchfile"
-        archivefiles="$archivefiles \"$f\""
+        printf '%s\n' "$f" >>"$workdir/files.txt"
       fi
     fi
   else
@@ -266,11 +266,12 @@
   if check_for_add_if_not_update "$f"; then
     make_add_if_not_instruction "$f" "$updatemanifestv3"
   else
-    make_add_instruction "$f" "$updatemanifestv3"
+    verbose_notice "     add \"$f\""
+    echo "add \"$f\"" >> "$updatemanifestv3"
   fi
 
 
-  archivefiles="$archivefiles \"$f\""
+  printf '%s\n' "$f" >>"$workdir/files.txt"
 done
 
 notice ""
@@ -302,7 +302,7 @@
 $XZ $XZ_OPT --compress $BCJ_OPTIONS --lzma2 --format=xz --check=crc64 --force "$updatemanifestv3" && mv -f "$updatemanifestv3.xz" "$updatemanifestv3"
 
 mar_command="$mar_command -C \"$workdir\" -c output.mar"
-eval "$mar_command $archivefiles"
+eval "$mar_command -f $workdir/files.txt"
 mv -f "$workdir/output.mar" "$archive"
 
 # cleanup

[ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge