OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 23 Сентябрь, 2017 10:32

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Открытие ссылок и документов
СообщениеДобавлено: Понедельник, 31 Июль, 2017 15:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Для открытия ссылок из Linux версии сделал вот такую процедуру.

Код:
   PROCEDURE (h: ExtCallHook) OpenExternal* (IN fileName: ARRAY OF CHAR);
   VAR  i, process: INTEGER; cmd: ARRAY [untagged] 128 OF SHORTCHAR;
   BEGIN
      FOR i  := 0 TO LEN(cmd) - 1 DO cmd[i] := 0X END;
      cmd := "xdg-open " + SHORT(fileName$);
      process := LinLibc.popen(cmd, "r");
   END OpenExternal;


Ссылки открываются.

Однако каждый раз при открытии возникает TRAP.
Вложение:
trap.png
trap.png [ 12.29 КБ | Просмотров: 397 ]


Не подскажете, в чем может быть дело? Что предложите попробовать для эксперимента еще?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Понедельник, 31 Июль, 2017 16:15 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Ошибочная сигнатура popen?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Понедельник, 31 Июль, 2017 16:40 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Илья Ермаков писал(а):
Ошибочная сигнатура popen?


Вот так тут приводится http://man7.org/linux/man-pages/man3/popen.3.html
Код:
FILE *popen(const char *command, const char *type);


А вот объявление:
Код:
MODULE LinLibc ["libc.so.6"];

TYPE
   PtrFILE* = INTEGER;
   PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;

...

   PROCEDURE [ccall] popen* (cmd, mode: PtrSTR): INTEGER;

END LinLibc.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Понедельник, 31 Июль, 2017 16:53 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Странно... Какая-то чудня с новым выравниванием в GCC, не?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Понедельник, 31 Июль, 2017 23:37 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 981
Откуда: СССР v2.0 rc 1
Кхм-кхм....

Герметизаацияяяя!.... :lol:

З.Ы. GCC мне откровенно не нравится. Жирный, непонятный, всего в нём понаворочено, концы с концами не сходятся.
LLVM потому и начат был, что над GCC контроль утерян и уже не вернётся, имхо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 07:37 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
prospero78 писал(а):
Герметизаацияяяя!....
Какая у тебя идея? Я не понимаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 08:28 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 340
а можно у вас как-то errno посмотреть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 08:37 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Kemet писал(а):
а можно у вас как-то errno посмотреть?

Попробую раздобыть.

Илья Ермаков писал(а):
Странно... Какая-то чудня с новым выравниванием в GCC, не?

Попробую сделать обертку и применить стандартное исправление для такого случая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 09:13 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 95
Откуда: Москва
Сталкивался с этой проблемой, трап возникал позже, на Sleep. Не решил, деталей уже не помню, оставил комментарий в коде.
Код:
      (* something wrong with popen on BlackBox, it traps later on Ta_Basics.Sleep *)
      pr.f := Tl.popen(str, "r");
      IF pr.f = 0 THEN
         res := -1
      ELSE
         pr.fd := Tl.fileno(pr.f);
         IF Tl.fcntl(pr.fd, Tl.F_SETFL, Tl.O_NONBLOCK) < 0 THEN
            res := -1
         ELSE
            res := 0
         END
      END


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 11:08 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Kemet писал(а):
а можно у вас как-то errno посмотреть?



Код:
   VAR   
      process: INTEGER;
      cmd, type: LinLibc.PtrSTR;
      sp: INTEGER;

   PROCEDURE POpen (a, t: ARRAY [untagged] 128 OF SHORTCHAR): INTEGER;
   BEGIN   
      SYSTEM.GETREG(4, sp);
      SYSTEM.PUTREG(4, sp DIV 16 * 16 - X);
      cmd := SYSTEM.VAL(LinLibc.PtrSTR, SYSTEM.ADR(a[0]));
      type := SYSTEM.VAL(LinLibc.PtrSTR, SYSTEM.ADR(t[0]));
      RETURN LinLibc.popen(cmd, type);
   END POpen;
   
   PROCEDURE (h: ExtCallHook) OpenExternal* (IN fileName: ARRAY OF CHAR);
   VAR  res: INTEGER;
   BEGIN
      process := POpen("xdg-open " + SHORT(fileName$) + " &", "r");
      res := LinLibc.pclose(process);
   END OpenExternal;
   
   (*   get error num from linux   *)
   PROCEDURE Errno*;
      VAR
         addr, errno: INTEGER;
   BEGIN
      addr := LinLibc.__errno_location();
      SYSTEM.GET(addr, errno);
      Log.Int(process); Log.Int(errno); Log.Ln;
   END Errno;


Для отладки вызываю процедуру Errno до открытия ссылки и после:

До открытия: 0 11
После: 163161008 11
Дескриптор файла значит создается корректно. 11 - какая-то ошибка, которая там висит сразу после запуска ББ
Код:
EAGAIN* = 11;   (* Try again *)


Изменения параметра X в процедуре POpen на 4, 8, 12, 16 не приводят к успеху. Обычно при проблемах выравнивания этот прием помогает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 11:15 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
А кто-нибудь знает, что значит TRAP 17 ? Была бы хоть какая-то подсказка...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 11:28 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 340
Иван, а Ос 64-битная?
И ещё, Иван, я уже заблудился в этих линуксовых ветках. Есть где-то обычный репозиторий без deb-пакетов, но готовый к запуску ибо у меня категорически OpenSuse


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 11:37 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Kemet писал(а):
Иван, а Ос 64-битная?
Да, ОС 64 битная Ubuntu 17.04 GNOME.
UPD: проверил на Ubuntu 16.04.2 32-бита. Тот же TRAP 17.

Kemet писал(а):
И ещё, Иван, я уже заблудился в этих линуксовых ветках. Есть где-то обычный репозиторий без deb-пакетов, но готовый к запуску ибо у меня категорически OpenSuse

Без пакетов либо соберите из исходников (там внизу ссылка)
https://blackbox.obertone.ru/download
либо вот тоже там есть ссылка на собранную систему, но с зависимостями надо будет самому разобраться
https://blackbox.obertone.ru/unstable/m ... .20.tar.gz

Для систем, основанных на Debian, зависимости такие:
Код:
32-bit version:

   sudo apt-get install libgtk2.0-0 gtk2-engines gtk2-engines-murrine libcanberra-gtk-module
   sudo apt-get install libgnomeui-0 gnome-icon-theme-full

64-bit version:

   sudo dpkg --add-architecture i386
   sudo apt-get update
   sudo apt-get install libgtk2.0-0:i386 gtk2-engines:i386 gtk2-engines-murrine:i386 libcanberra-gtk-module:i386
   sudo apt-get install libgnomeui-0:i386 gnome-icon-theme-full


Для GNOME:
Код:
libc6:i386, libgtk2.0-0:i386, libgnomeui-0:i386, gtk2-engines:i386, gtk2-engines-murrine:i386, libcanberra-gtk-module:i386, gtk2-engines-pixbuf:i386, gnome-themes-standard:i386


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Вторник, 01 Август, 2017 17:29 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Иван Денисов писал(а):
А кто-нибудь знает, что значит TRAP 17 ? Была бы хоть какая-то подсказка...


Если кидается системное исключение, то код трэпа может вылезти самый разный...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Пятница, 04 Август, 2017 08:34 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Может быть дело вот в том недочете вызова ccall, который нашел luowy ?
https://forum.blackboxframework.org/vie ... 654&p=6256


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Открытие ссылок и документов
СообщениеДобавлено: Пятница, 04 Август, 2017 21:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Ну тогда надо DevDecoder-ом колупнуть место вызова процедуры...


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

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


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

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


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

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