OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 14 Ноябрь, 2024 08:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 18 Февраль, 2020 19:31 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
dev0 пускается с ключом BB_PACKED_FIRST. Не надо поддерживать отдельную копию HostPackedFiles -- HostDevPackedFiles.
Код:
exe="dev0"

# export LD_DEBUG=all
exec env \
   BB_PRIMARY_DIR="${pd}" BB_SECONDARY_DIR="${sd}" \
   BB_PACKED_NAME="${exe}" BB_PACKED_FIRST= \
   "${pd}"/${exe} "${@}"

Реализация для линуха ниже, для винды изменения аналогичные. HostConf -- см. viewtopic.php?t=6557
Код:
MODULE HostPackedFiles;
...
   IMPORT SYSTEM, Files, HostFiles (*, Dialog*), Libc := LinLibc, HostConf;
...
   VAR
      packedFirst: BOOLEAN;
      ...
   PROCEDURE (d: Directory) Old (loc: Files.Locator; name: Files.Name; shared: BOOLEAN): Files.File;
      VAR f: Files.File;
   BEGIN
      IF packedFirst THEN
         f := packedDir.Old(loc, name, shared);
         IF f = NIL THEN f := orgdir.Old(loc, name, shared) END;
      ELSE
         f := orgdir.Old(loc, name, shared);
         IF f = NIL THEN f := packedDir.Old(loc, name, shared) END;
      END;
      RETURN f
   END Old;
...
   PROCEDURE Init;
      VAR loc: Files.Locator; appName: Files.Name; pDir: PackedDirectory; sDir: Directory;
         buf: ARRAY 2 OF CHAR; res: INTEGER;
   BEGIN
      HostConf.GetPar("BB_PACKED_FIRST", buf, res); packedFirst := res = 0;
      HostConf.GetPar("BB_PACKED_NAME", appName, res);
      IF res = 2 THEN
         Msg("HostPackedFiles: BB_PACKED_NAME parameter not specified")
      ELSIF res IN {1, 3} THEN
         Msg("HostPackedFiles: failed to get BB_PACKED_NAME")
      ELSE
         loc := Files.dir.This(""); Files.dir.GetFileName(appName, "", appName);
         exefile := Files.dir.Old(loc, appName, Files.shared);
         IF (exefile # NIL) & (loc IS HostFiles.Locator) THEN
            curloc := loc(HostFiles.Locator);
            ReadResourceTable;
            NEW(pDir); packedDir := pDir; NEW(sDir); stdDir := sDir;
            SetFilesDir
         ELSE
            DebugPrint("HostPackedFiles: Could not open " + appName)
         END
      END
   END Init;
...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB