2021-02-11

vak: (Default)
(перепост https://www.linux.org.ru/news/sco/16155532)

Darl McBride, бывший глава SCO, компании долгое время судившейся в США против Linux, подал на банкротство.

Краткий пересказ саги:
  • SCO заявила о правах на оригинальный код UNIX (SVR4), купленный у Novell.
  • SCO заявила, что Linux основан на этом коде и все теперь им должны.
  • Суд выяснил, что SCO не получила исключительных прав на код UNIX.
  • Также выяснилось, что в Linux не было никакого кода UNIX.
  • Кроме маленького кусочка за авторством то ли Thompson то ли Ritchie, который был в ядре некоторое время, пока не был удалён полностью.
  • Кроме того выяснилось, что этот кусочек был под лицензией BSD, и как раз SCO удалила BSD заголовок перед тем как заявить, что этот код их.
vak: (Default)
Наверное вы знаете, что в юниксе есть такой системный вызов execv(), который выполняет нужный файл с произвольным списком параметров. Вот таким макаром:
int execv(const char *path, char *const argv[]);
А мне нужно нечто похожее, но чтобы вызвать функцию (по указателю) с произвольным списком аргументов. Что-то вроде:
void call(void (*func)(...), int *argv[]);
Функция определена где-то как обрабатывающая фиксированный набор параметров. К примеру, это может быть:
void add(int *a, int *b, int *c)
{
*c = *a + *b;
}
У меня есть указатель на функцию, и массив параметров, количество которых заранее не фиксировано. Хотелось бы вызвать некую функцию call(), которая бы положила нужные параметры на стек и вызвала функцию:
call(func, argv);
Может такое есть уже где-то, а я просто не в курсе?
OSZAR »