LINUX.ORG.RU

Сообщения LINUX-ORG-RU

 

Аrchbang - обновил обои!

 , ,

А также добавил по словам разработчика новые «зимние» темы и поменял цвета в i3

https://ru.wikipedia.org/wiki/ArchBang - для тех кто в танке =)

Ожидайте новых iso сборок :D Пока что ничего нету, ждём в галерее показа мод =)

ссыль https://archbang.org/2021/12/29/winter-beta-release/

LINUX-ORG-RU
()

Qt6.2 + Webassembly = лавки чмафки

 , ,

Можно потыкать https://www.qt.io/qt-examples-for-webassembly

Культя опубликовала статью в которой показывает работу qt приложений в браузере https://www.qt.io/blog/qt-6.2-web-assembly-whats-new. Для сборки используется Emscripten, а позиционируют они это как возможность избегания установки приложений.

На данный момент в браузере могут работать вот эти модули

  • Qt Core
  • Qt Gui
  • Qt Network
  • Qt Declarative
  • Qt Svg
  • Qt Charts
  • Qt mqtt

Что позволяет писать вполне полноценные и полновесные приложения для браузера на Qt. По ссылке скрины выполняющихся программ в браузере. Хоть эта фича пока тестовая, но видно что qt серьёзно так настроилась, так как подобный рынок по сути пустой и можно серьёзно застолбится предоставив наверное первый настолько мощный инструмент для web приложений (ну не считая игровых движков)

Ах да, проприетарщина поганая =) Но кто знает может внезапно опять сменят политику партии. Пока что культя верным шагом идёт к своим проприетарным истокам.

LINUX-ORG-RU
()

Atox 0.7.0

 , , ,

Группа Интернет

Atox — это свободный клиент Tox (wikipedia.org) для Android, написанный на языке Kotlin.

( читать дальше... )

>>> Подробности (github.com)

LINUX-ORG-RU
()

youtube-dl 2021.12.17

 

Группа Мультимедиа

Обделённый вниманием релиз вышел 12 дней назад, но тем не менее.

youtube-dl - это менеджер загрузки с открытым исходным кодом под лицензией public domain для видео и аудио, как YouTube, так и более 1000 других веб-сайтов.

Самые значимые исправления и улучшения в этом релизе:

  • Теперь показывается вывод ffmpeg при ошибках.
  • Добавлена поддержка pornhubthbh7ap3u.onion.
  • Возможность определять географическое ограничение для pornhub.
  • Возможность выбирать лучшее качество для pornhub.
  • Улучшенная обработка ссылок для curiositystream.
  • Исправление обработки ссылок на видео с ограничением по возрасту для youtube.

Присутствуют также другие исправления и поддержка новых сайтов.

>>> Подробности (github.com)

LINUX-ORG-RU
()

Конференция «Базальт СПО» — «СПО: от обучения до разработки 2022»

 , , ,

Группа Конференции и встречи

«Базальт СПО» приглашает российских разработчиков свободного программного обеспечения на конференцию которая пройдёт с 19 по 22 мая 2022 года в в Переславле-Залесском

Мероприятие объединяет две традиционные ежегодные конференции «Базальт СПО»: «СПО в высшей школе» и конференцию разработчиков свободных программ.

Организаторы ручаются, что конференция, как и во все предыдущие годы, пройдет в неформальной творческой атмосфере свободного обмена идеями, знаниями и кодом. Это очень ценят участники всех мероприятий «Базальт СПО».

Видеозаписи докладов и презентации будут размещены в открытом доступе.

Оргкомитет принимает заявки на доклады по следующим темам.

  • СПО в учебном процессе (19 и 20 мая):

    • Научные проекты, связанные с разработкой и использованием свободного ПО.
    • Взаимодействие высшей и средней школы при внедрении свободного программного обеспечения в общеобразовательных учреждениях.
    • Внедрение свободного ПО в инфраструктуру учебного заведения: проблемы и решения.
    • Социальные и экономико-правовые особенности применения свободного ПО в высшей школе.
    • Студенческие проекты разработки СПО.
  • Разработка свободного ПО (21 и 22 мая):

    • Тенденции разработки свободного программного обеспечения.
    • Новейшие достижения проектов СПО.
    • Развитие инструментов разработки свободного ПО.
    • Разработка свободных программ для разных аппаратных платформ.
    • Средства и методы миграции ИТ-инфраструктуры на свободное ПО.
    • Формирование российского сообщества разработчиков СПО.
    • Правовые вопросы использования СПО.
    • Культурные и философские аспекты свободного ПО.

>>> Подробности (basealt.ru)

LINUX-ORG-RU
()

Птички не жрут вкусную и полезную еду!

 , , , ,

На улице холодна. Птички как маленькие ядерные реакторы им норм, но надо топливо. Взял поддон от печенья давалил туда овса, опарышей, сала, жира топлёного, семечек от кобачков, дольку банана одна штука. Высунул за окно поставил на подоконник. Неделя прошла, ноль внимания на швейцарский стол, хотя слышно как чирикают на деревьях буквально в десяти метрах.

Врубал песенку большой синицы на 2 часа. Ноль внимания. А вы подкармливаете птичек? И хавают ли они ваши угощения в это нелёгкое для них время. У нас видимо зажрались. Или боятся/игнорят моё окно.

(перед окном никто не прыгает, на самом окне растительности просто тьма всё в зелени окно открыть пробелема) Звуки в комнате только от ударов по клавишам.

UDP: Ну и хрен с ними :D

LINUX-ORG-RU
()

Гуголь и рассылка debian-russian эмммм

 , , , ,

В продолжении темы Гуголь спамит в рассылку дебиана

Новое https://i.ibb.co/hCJxKtw/2021-12-12-12-52-28.png

Держу в курсе

LINUX-ORG-RU
()

Гуголь спамит в рассылку дебиана

 , , ,

https://i.ibb.co/bb2HbrB/2021-12-09-14-04-43.png =) К слову мне уже раз 10 пришло сообщение на мыло о изменениях в условиях использования. Держу в курсе.

LINUX-ORG-RU
()

Как запустить игушку Reveal The Deep ?

 , ,

Решение

  • 1 скачать jre-8u311-linux-i586.tar.gz https://javadl.oracle.com/webapps/download/AutoDL?BundleId=245467_4d5417147a92418ea8b615e228bb6935

  • 2 распаковать в steamapps/common/Reveal The Deep/Linux/

  • 3 Запускать из каталога Linux через терминал ./jre1.8.0_311/bin/java -jar ./rtd.jar

  • 4 В случае неуспеха возможно нужно доустановить apt install libxtst6:i386 или иные библиотеки на отсуцтвие которых будет ругаться


Есть вот такая игрушечка Reveal The Deep и очень хочется в неё попробовать поиграть, но вот проблема из стима она не стартует и проблема не нова https://steamcommunity.com/app/411560/discussions/search/?q=linux&gidforum=485624149155954013&include_deleted=1

Ошибка при запуске через терминал такая

dron@gnu:~/.steam/debian-installation/steamapps/common/Reveal The Deep$ ./Linux/RevealTheDeep 
Loading JVM runtime library ...
Passing VM options ...
Creating Java VM ...
Passing command line arguments ...
Loading JAR file ...
Exception in thread "main" java.lang.ClassNotFoundException: mitchellbaxter.depthcharge.desktop.DesktopLauncher
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
Error: failed to load/find main class mitchellbaxter.depthcharge.desktop.DesktopLauncher
#--------
#-- Попытка пустить напрямую
#--------
dron@gnu:~/.steam/debian-installation/steamapps/common/Reveal The Deep$ java -jar ./Linux/rtd.jar 
Inconsistency detected by ld.so: dl-lookup.c: 105: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
dron@gnu:~/.steam/debian-installation/steamapps/common/Reveal The Deep$ 

Java я не знаю и специфики, конечно видно error: failed to load/find main class mitchellbaxter.depthcharge.desktop.DesktopLauncher мол чего то не хватает, но у многих же игра работает (кеш я проверял) значит то что нужно есть, но как бы нет.

Ну, подумал пустить через протон, но хрен не слаще репы там javы нету ну и всё.

Есть как бы конфиг где указывается тот самый mainClass и откуда его брать classPath

{
  "classPath": [
    "rtd.jar"
  ],
  "mainClass": "mitchellbaxter.depthcharge.desktop.DesktopLauncher",
  "vmArgs": [
  ]
}

Если открыть в архиве rtd.jar и поискать DesktopLauncher оно там есть https://i.ibb.co/YjfZH0d/2021-12-07-19-40-18.png эммм и чво?

В ином типе запуска уже ошибка Inconsistency detected by ld.so: dl-lookup.c: 105: check_match: Assertionversion->filename == NULL || ! _dl_name_match_p (version->filename, map)’ failed!` опять же логика понятна, а суть и откуда ноги растут нет.

Если под strace погонять то

stat64("/home/dron/.steam/debian-installation/steamapps/common/Reveal The Deep/Linux/mitchellbaxter/depthcharge/desktop/DesktopLauncher.class", 0xffe62f3c) = -1 ENOENT (Нет такого файла или каталога)

Эммм, ничё не понимаю.

У кого то есть эта иушечка? Работает? Или может есть на трекерах пираточка репакнутая рабочая? Я то игру купил, аж три раза (себе и 2 подарка) так что можно с чистой совестью и в полном соотвецвии с законом доводить ПО до рабочего состояния =)

Если есть идеи отпишитесь, а я пойду ещё порою обсуждения и саму игру дальше поковыряю

LINUX-ORG-RU
()

Игры про космос/фантастику/отмосферку/историю или типа того.

 , ,

Вот закончил The Swapper проходить (по совету анона взял очень не пожалел странно что раньше не слышал про неё и не видел нигде), до этого прошёл Alien Isolation. До этого прошёл две части Dead Space. До этого прошёл SOMA. Между делом другие были, но эти отражают то чего хоца. В них всех есть некий антураж общий. Ну так вот. Кто чего посоветует, на подобе или около того?

LINUX-ORG-RU
()

The swapper - как этот уровень пройти?

 , ,

Вота https://i.ibb.co/vH52xLN/2021-11-30-21-09-13.png и если можно не прям как, а просто одну подсказку. Сижу туплю минут 10 уже. Сил нет =)

Гуглить непонятно как нет номеров карты, а если искать то полигры заспойлерю себе, а она и так небольшая вроде

Аааа, всё, допёр.

LINUX-ORG-RU
()

возможен ли фиксированный poll rate мышки?

 , ,

Установил частоту опроса на 1000Hz

options usbhid mousepoll=1
#systool -m usbhid -A mousepoll
Module = "usbhid"

    mousepoll           = "1"

Смотрю через evhz

USB OPTICAL MOUSE : Latest  1008Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   496Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   500Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   502Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   496Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   494Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   506Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   494Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   500Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   336Hz, Average   536Hz
USB OPTICAL MOUSE : Latest   479Hz, Average   535Hz
USB OPTICAL MOUSE : Latest   523Hz, Average   536Hz
USB OPTICAL MOUSE : Latest   490Hz, Average   536Hz
USB OPTICAL MOUSE : Latest     1Hz, Average   528Hz
USB OPTICAL MOUSE : Latest   100Hz, Average   514Hz
USB OPTICAL MOUSE : Latest   492Hz, Average   514Hz
USB OPTICAL MOUSE : Latest   111Hz, Average   508Hz
USB OPTICAL MOUSE : Latest    13Hz, Average   500Hz
USB OPTICAL MOUSE : Latest    91Hz, Average   494Hz

Двигаю быстро частота взлетает, начинаю пиксельхантить частота вплоть до 1 герца.

Просто интересно можно ли принудительно заставать мышку опрашивать 1000Hz стабильно? Чтобы даже если она на месте стоит частота опросов не падала?

И вот ещё, заметил что клик происходит не когда я НАЖИМАЮ кнопку, а когда я её ОТПУСКАЮ. Нет не потому что клик происходит при отпускании, а потому что он настолько долгий походу что я это тупо вижу. Тоесть нажал отжал два щелчка от кнопки, ну так вот действие от клика (любое игры,сброс выделения текста да что угодно) происходит с запозданием, я нажимаю отжимаю, даже палец вверх на милимерт успеваю поднять и происходит действие.

Ну так вот, у меня мышек в жизни мало было эта OKLICK какая то дешманская, но такая задержка… Может что-то подкрутить можно? Тила latency какой может есть, на примере с скоростью опроса датчика. Ну и вот ещё до кучи, если мышку поднять то светодиод через секунду тише светит как будто она чрез N мс уходит в ожидание это софтовым методом происходит как с падением частоты опроса или нет?

Суть… В CS:GO нагибать неполучается душенька лютует. У меня реакция 15 мс я тупо нажимаю и жду кулак в подбородок когда железо по проводам данные перешлёт… Хнык.

UDP: Нет игры нет проблем, нафиг эту задротилку =)

LINUX-ORG-RU
()

Сегодня конференция по Steam Deck начало в 21:00

 , , , ,

Сейчас на инглише будет попозжа переведут, вроде как будет обзор желеееза там, как разрабам чё да как деееелать там и всё такое. И вообще вроде как будет много чего интересного для интересующихся.

https://steamcommunity.com/steamworksvirtualconference/steamdeck

Я смотреть не буду ибо иду в люльку и ваааще буду ждать перевод. А тут может кто выжимку даст =)

Всё, споки споки ноки, чу ^.^

LINUX-ORG-RU
()

cast xDShot VTFedit

 ,

vblank_mode=0 %@xDShot% привет ты наверняка пользуешься VTFedit не будет трудно скинуть рабочий wine бутыль с ним? Ему нужен dontnet20 который сейчас не качается, короче никак… Или можно чем то другим конвертировать tga в vtf? Есть для gimp плагин древний на гитхабах, вываливается на этапе сборки boost ковырять плюсовый мусор не умею.

И я до сих пор негодую, чего все теги повыпиливали? Был же тег texture,текстуры и прочее…

LINUX-ORG-RU
()

TGA + RLE + Gimp = не понимаю

 , , , ,

Суть вот две картинки из 4х пикселей RGB порядок с лева на право с верху вниз

  • б белый
  • ч чёрный
[б][ч]
[ч][б]
xxd -g 1 norle.tga;#картинка без RLE
00000000: 00 00 02 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20 ff ff ff 00 00 00 00 00 00 ff ff ff 00 00  . ..............
00000020: 00 00 00 00 00 00 54 52 55 45 56 49 53 49 4f 4e  ......TRUEVISION
00000030: 2d 58 46 49 4c 45 2e 00                          -XFILE..

xxd -g 1 rle.tga#картинка с RLE
00000000: 00 00 0a 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20 01 ff ff ff 00 00 00 01 00 00 00 ff ff ff  . ..............
00000020: 00 00 00 00 00 00 00 00 54 52 55 45 56 49 53 49  ........TRUEVISI
00000030: 4f 4e 2d 58 46 49 4c 45 2e 00                    ON-XFILE..

Тут

00000000: 00 00 0a 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20

Это TGA заголовок где третий байт 02 указывает что это TRUE COLOR NO RLE. А 0a что это TRUE COLOR + RLE Далее 11+12 это размеры по икс, а 13-14 размеры по y 2x2 пикселя итого 4 я великий математик

18 это битность цвета равная (R=8+G=8+B=8) = 24 бита или 3 байта на блок данных которые будет кодировать RLE.

Далее 20 это солянка из бит в байте, тут указывается что данные идут с лева на право с верху в низ. Всё понятно?

Далее следующий байт в без RLE картинке это собсна и есть данные цвета вот они

00000010: 18 20 ff ff ff  00 00 00   00 00 00  ff ff ff
          *  * [R  G  B] [R  G  B ] [R  G  B ][ R  G  B]

Всё что дальше не важно.

А вот теже данные но типа с RLE

00000010: 18 20 01 ff ff ff 00 00 00 01 00 00 00 ff ff ff
          *  * RLE [ DATA ] ?????????????????????????????
                           [ DATA? ][RLE][DATA ] [ DATA ]

Тут сразу за 0x20 идёт 01 что как бы значит что ага у нас один блок данных из 24 бит или 3ёх байт

01 ff ff ff
RLE BLOCK [RLE_LEN=01 RLE_DATA= ff ff ff

Так как данные чередуются то они кодируются от 1 до 127, если есть нечередующийся блок то он кодируется от -1 до -127, при декодировании достаточно убрать знаковый бит и получить число. Но тут этого не надо это так для справки если я сам правильно понял.

Ну так вот ребята а дельше идёт 00 00 00 эммм ну ОК если у нас следующий блок за 01 ff ff ff равен нулю то эмм значит он и есть часть блока и надо его тоже добить нулями до 3 байт, ладно, прыгаем вперёд уже не на 4 байта (RLE=1+COLOR_BITS=3) а на просто 3. И читаем 01 00 00 00 ага у нас один блок данных из трёх нулевых байт. Сразу вопрос какого хрена это и предыдущее просто не 02 00 00 00 тоесть не 2 блока по 3 нулевых байта тоесть 6 нулевых? А вместо этого чехорда. Ок идём дальше, а там ff ff ff 00 мы знаем размер картинки уже это 2x2 и это последний 24 битный блок, но мы в месте первого ff ожидаем RLE значение последовательности. Короче я чего то не понимаю ни хе ра. Картинка тривиальная из 4х пикселей там где RLE по сути избыточен, но если он задан данные должены обрабатываться именно как RLE последовательность. Только вот хрень какато…. И да на просто чёрной или белой картинке такие же приколы хотя там то всё должно быть вообще по красоте, но нет там тоже есть места где 00 00 00 вылазят на който хер отдельно вместо кодирования вместе с другими данными.

Да я в курсе что xxd показывает мне например 0x86 как длину последовательности 134 блока по 3 байта (3=R8G8B8), но на деле это выше 127 значит надо убрать знаковый бит и получить длину последовательности 6 блоков по 3 байта (3=R8G8B8) Но в примере этого нет так как и так разбор как я всё это понимаю растянулся.

Ну так вот друзья, чё за жопка? Что я не так понимаю? Можете сами взять картинку побольше 8на8 например, нарисовать на одной половине просто цветом одим, а на второй попеременным там или как удобно сохранить как c RLE так и без. Посмотреть на обе через xxd и увидеть приколы, как оно закодировано. Тут так, а тут сяк.

Бррррррррр, https://www.youtube.com/watch?v=vlUe8ciyh4w

P.S. Я хрен знает какие теги ставить вычистили всё блин rle, tga поставить не даёт. Кто там все теги вычистил и нахрена?

ЧЯДНТ?

UDP: Результат работ тут https://github.com/orangeduck/Corange/pull/73 кому надо

LINUX-ORG-RU
()

Производительность реализаций парсинга конфигурационных форматов

 , , , ,

Интересует большая табличка сравнения скорости парсинга различных древовидных форматов конфигураций в разных реализациях. Json например и json-c,jansson иное. TOML например и его реализации. libconfig и так далее. Что бы например им скармливали гигабайтный конфиг и сколько мегахешей мегабайт с секунду они обрабатывали.

Да я гуглю прямо сейчас, но какие то рандомные тесты непонятные везде. Хочется сравнения в один ряд и форматов и реализаций при обработке одних и тех же данных.

Ну вот например https://github.com/serde-rs/json-benchmark/blob/master/README.md только по множеству разных форматов и их реализаций хочется увидеть.

UDP: Короче масштабных сравнений нету в природе вроде

LINUX-ORG-RU
()

Лор не открывается с мобилки ERR_TIMED_OUT

 , , ,

UDP: Причина в MTU или чём то косвенно/явно с этим связанным. ЯННП. Path MTU Discovering Black Hole причина вроде.

UDP2: Да это оно

This target allows to alter the MSS value of TCP SYN packets, to control the maximum size for that connection (usually limiting it to your outgoing interface’s MTU minus 40 for IPv4 or 60 for IPv6, respectively). Of course, it can only be used in conjunction with -p tcp. It is only valid in the mangle table. This target is used to overcome criminally braindead ISPs or servers which block "ICMP Fragmentation Needed" or "ICMPv6 Packet Too Big" packets. The symptoms of this problem are that everything works fine from your Linux firewall/router, but machines behind it can never exchange large packets:
1) Web browsers connect, then hang with no data received.
2) Small mail works fine, but large emails hang.
3) ssh works fine, but scp hangs after initial handshaking.
Workaround: activate this option and add a rule to your firewall configuration like:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu

--set-mss value
Explicitly set MSS option to specified value.

--clamp-mss-to-pmtu
Automatically clamp MSS value to (path_MTU - 40 for IPv4; -60 for IPv6).

Установил пока MSS на минимально возможный

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Скорость закачки норм.

Testing download speed................................................................................
Download: 85.27 Mbit/s
Testing upload speed......................................................................................................
Upload: 93.89 Mbit/s

И это при 30 Mbit/s который мне провайдер предоставляет, он же виноват в проблеме. Ко мне не приходят IMCP пакеты с требованием о фрагментации пров их режет на кой то хер, ну я так понял ибо я их не вижу в tcpdump. (вижу, но не те). Ладно может кому пригодится. Фух. Хоть теперь относительно понятно.


В чём может быть причина? Пк->wifi свисток->мобилка. Из termux linux.org.ru пингуется. Но с браузера не заходит. Да, другие сайты работают. Опенннет например и прочие гуглы. wget в termux останавливается на connected. Что-то не то с сертификатами? Lynx тоже не открывает из termux. С основного пк, вот сейчас пишу всё нормально.

Межсетевые экраны отключены. nftables,iptables чистые.

LINUX-ORG-RU
()

Автоматически вставить макрос в начало функции и в конец

 , , , ,

Для регистрации входа в функцию и выхода есть -finstrument-functions который укажут вызываемую и вызывающую функцию, ну и вход и выход из функций.

#include <stdio.h>


char * str = 0;
    void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function));
    void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));
    void __cyg_profile_func_enter (void *func,  void *caller)
    {
        printf("start \n");
    }


    void __cyg_profile_func_exit (void *func, void *caller)
    {
        printf("end \n");
    }

void func(){}

int main(int argc, char *argv[])
{
    func();
    return 0;
}
dron@gnu:~/Рабочий-стол$ gcc cc.c -Wall -pedantic -std=c11 -finstrument-functions
dron@gnu:~/Рабочий-стол$ ./a.out 
start 
start 
end 
end 
dron@gnu:~/Рабочий-стол$ 

Есть ли что-то такое же, но для макросов? Суть. Я для себя лабаю трассировщик вызовов, да я знаю про backtrace_*() функции. Но без объяснений почему я его не хочу, я его не хочу в данном случае. Ну если кратко быстрее __func__,__FILE__ из тела при вызове отдать чем дрыгать backtrace_*() который будет дрыгать таблицы. Но но это не суть вообще.

Сейчас я делаю тупо вставку макросов в начало и конец функции, если есть return то перед каждым return то есть перед выходом

/*
RS --Record Start
RE --Record End
PB --Print Backtrace
*/
void function_5() {RS   RE}
void function_4() {RS   function_5();  function_5(); function_5();  RE}
void function_3() {RS   function_4();  function_4(); function_4();  RE}
void function_1() {RS   function_3();  PB;  RE}
void function_2() {RS   function_1();  function_1(); function_1();  RE}
int main()
{
RS
    function_2();
RE
}

с выхлопом

dron@gnu:~/Рабочий-стол/HUNTER$ gcc cc.c
dron@gnu:~/Рабочий-стол/HUNTER$ ./a.out 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
dron@gnu:~/Рабочий-стол/HUNTER$ 


Всё хорошо (ну ещё доделывать надо но суть ясна) только расставлять макросы муторно.

Вариантов вижу три

  • 1 руками

  • 2 парсером каким, который определит что это функция, вот её начало, а вот конец, а вот return и return вдруг сам не макрос

  • 3 чем то типа -finstrument-functions но для макросов

Вот собсна всё. Чво посоветовать по этому поводу есть?

LINUX-ORG-RU
()

Как определить что вывод был перенаправлен?

 , , ,

Допустим программа делает

appname 
-hello
fprintf(stdout,"\x1B[31m""-hello""\x1B[39m");

Но если

appname > out.txt

она будет делать

fprintf(stdout,"hello");

Можно ли как то определить что stdout был перенаправлен?

LINUX-ORG-RU
()

Можно меня заморозить до первого числа? Пожалуйста.

 , , ,

Сервер отключать не обязательно, пусть люди общаются. Спасибо.

LINUX-ORG-RU
()

RSS подписка на новые темы