URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 68727
[ Назад ]

Исходное сообщение
"Продемонстрирован код, который по мнению SCO был скопирован ..."

Отправлено opennews , 12-Июл-10 11:19 
Юрист Кевин МакБрайд (Kevin McBride), брат бывшего главы компании SCO Group, раскрыл (http://www.mcbride-law.com/2010/07/09/lanham-act-claims-exte.../) завесу тайны над участками кода, скопированными из UNIX в Linux. Данный код фигурировал в качестве доказательств в деле о нарушении интеллектуальной собственности SCO компанией IBM, передавшей свои разработки для включения в состав Linux-ядра. По мнению юристов SCO часть переданного кода содержала участки, скопированные из кодовой базы проприетарного AT&T Unix без изменений.


Ранее фигурирующие в разбирательстве участки кода не придавались огласке, что вызывало подозрение в лукавстве, тем более, что суд не спешил признавать правоту SCO. После того, как в 2003 году, в ходе судебного разбирательства с IBM оказалось, что права на Unix принадлежат не SCO, а компании Novell, иск к IBM и дело по передаче кода Unix разработчикам ядра Linux было отложено в долгий ящик, в качестве первичной зада...

URL: http://linux.slashdot.org/story/10/07/11/2314254/Claimed-Pro...
Новость: http://www.opennet.ru/opennews/art.shtml?num=27269


Содержание

Сообщения в этом обсуждении
"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Filosof , 12-Июл-10 11:19 
Даже я сейчас начинаю подозревать, что их МС кормит.
Есть надежда. что если анализ кода подтвердит притянутость за уши этих притензий, то общемировое подозревание Линуха в патентоподверженности поуменьшится.
Надо только всё правильно сделать.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено mma , 12-Июл-10 13:35 
>Есть надежда. что если анализ кода подтвердит притянутость за уши этих притензий,

Ну это и так очевидно, если что там и было так уже давным-давно все вычистили/переписали.

Тут суть претензий в том что IBM решила там где это возможно слить рынок Unix в пользу Linux а себе оставить рынок майнфреймов и не пускать туда новых участников. И после полно слива Novell это уже никто не мешал им сделать что и произошло десяток лет назад.

Ну а SCO оказалась пострадавшей так как их бизнес был исключительно на софте построен, вот они и горят в агонии пытаясь пока еще есть крупные клиенты пролезть в какойнить сегмент а их никто не пускает. Вот они и пытаются договориться с IBM -  вы нам сегмент, мы отстанем от линукса.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Macil , 12-Июл-10 14:09 
Все проще. Компания Caldera прикупила ошметки SCO (которая без Group). Как показала практика, реальная стоимость приобретенных активов чуть более, чем 0 и быстро снижается. Более того, возникла самая банальнейшая внутренняя конкуренция между Caldera Linux и UnixWare. Короче, имело место быть нецелевое использование средств акционеров.

Перед ответственными замаячила реальная перспектива выступления перед советом директоров и собранием акционеров со спущенными штанами (и без вазелина). Ессно, мозги ответственных стали работать со страшной скоростью. И как результат:

1. Обвинить во всем линукс. Отвлечь внимание от корня проблемы, лишний пиар и рост капитализации.
2. Найти лохов, которые купят у SCO Group активы SCO.
3. Найти лохов, которые купят лицензии SCO Group, как на линкс, так и на UnixWare.
4. Найти лохов, которые купят акции SCO Group.
5. Инсайдерская игра на бирже. (Смотрим на график стоимости акций - сразу все будет понятно).

Как видно, по всем пунктам, кроме 2 полный успех. Да и то, какие-то лох^W венчурные капиталисты вроде бы интересуются активами SCO. Учитесь делать бизнес из воздуха, господа.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 15-Июл-10 02:35 
> Учитесь делать бизнес из воздуха, господа.

Чтоб делать деньги из воздуха, нужны активы в размере $1.000.0000.000, пускай даже режиме ReadOnly


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 12-Июл-10 18:27 
m$ - любители половить рыбку в мутной воде. scoты получают свои чаевые и обеспечивают муть.

"Толсто?"
Отправлено grafsoft , 12-Июл-10 11:19 
Ну дык, сама суть идеи линукса - клон юникса, подумаешь функции обзывали также, структуры, заново то все делать и самим придумывать это вам не шуточки :)

"."
Отправлено dimqua , 12-Июл-10 11:58 
Не ядра Linux, а системы GNU. GNU's Not UNIX, помним, да.

"."
Отправлено grafsoft , 12-Июл-10 12:14 
А так же помним, что это фольклорное обозначение того времени, продукта похожего на то, что стоит после "NOT". Типа "копия, со смайликом"

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 11:21 
Это смешно... Там максимум 1000 строк кода наберется. И то, по причине того чтобы есть стандарты и по ним многое должно соответствовать.
Всех претензий едва ли наберется на $1000...

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Feadot , 12-Июл-10 11:38 
>Всех претензий едва ли наберется на $1000...

"Да ты что?!", тут ущерба на 1000 баксов с одного ядра, которое использовалось пользователями. А это уже триллионы-миллиарды баксов :-) В США на такой херне либо стоят империи, либо прогорают :-)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Антон , 12-Июл-10 11:46 
>Всех претензий едва ли наберется на $1000...

Вы очень близки к истине, примерно именно такую сумму SCO затребовала от компаний, разослав году в 2003 предупреждение о нарушении их авторских прав в Linux. Только перечислять эту сумму нужно было с каждого сервера. Прикиньте, 40$ стоил тогда самый дешевый коробочный Red Hat Linux, плюс 1000$ требовала SCO за свои 100 строк кода :-)


"Сбер их кормит"
Отправлено Аноним , 12-Июл-10 11:26 
только зачем?

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено filosofem , 12-Июл-10 11:40 
ГЫ!! Копирайт на название функции char *strcpy(). Еще бы за использование "int main()" роялити потребовали и "int i;" запатентовали.
Интересно почему у них к Мелкософту нет аналогичных притензий? Там такие же функции.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Feadot , 12-Июл-10 11:46 
интересно, а сколько будет "int i;" в ядре линуха...

pS: насколько помню, самые частые переменные I,J,K,A,B,C...


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено filosofem , 12-Июл-10 12:06 
>интересно, а сколько будет "int i;" в ядре линуха...

13990


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 12:08 
>13990

Именно int i; ?



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено filosofem , 12-Июл-10 12:14 
Именно. В основном в драйверах и фирмварях.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 12:16 
Плохо. Переменные обнулять нужно при объявлении, если им сразу не присваивается какое-то значение. Я думал, уж ядерщики это точно знают.



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено filosofem , 12-Июл-10 12:18 
Ну это не сложно пропатчить при желании. =)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 12:21 
Это - несложно, а сколько там ещё таких объявлений. Нужно более интенсивно пользоваться инструментами анализа кода для кода, включаемого в ядро, я так считаю.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено starik , 12-Июл-10 13:01 
Зачем? Какой  смысл в лишних инструкциях для обнуления? Просто нужно и всё?

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено QuAzI , 12-Июл-10 13:48 
Смысл в предсказуемости поведения кода, если дальше где-то что-то пойдёт не так. Вообще, ИМХО, чтобы исключить криворукость, это должен компилятор контролировать. Мол если гарантированно переменная дальше инициализируется, то можно и не обнулять, а если есть варианты, то обнулять однозначно.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pazke , 12-Июл-10 14:11 
> Вообще, ИМХО, чтобы исключить криворукость, это должен компилятор контролировать.

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


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Kibab , 12-Июл-10 14:46 
int i;
for(i=0; i<N; i++) {
...
}

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено СуперАноним , 12-Июл-10 18:47 
Пора бы уже им на C99 переползать.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено User294 , 12-Июл-10 20:09 
>int i;

Все, сейчас SCO вас засудит за кражу их кода.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено iZEN , 12-Июл-10 22:43 
>>int i;
>
>Все, сейчас SCO вас засудит за кражу их кода.

Меняй язык программирования Це на Яву — не засудит. ;)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено User294 , 13-Июл-10 20:29 
Там засудят за какойнить i++. Невелика разница.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 13-Июл-10 23:44 
вообще-то протензии scoтов по ядру. перепишите ядро на яве (ненаучная фантастика), тогда уж поболтаем на эту тему. ;)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 14-Июл-10 02:07 
претензии. извиняюсь

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 12-Июл-10 15:56 
Знают.
А вы знаете, что инициализированная переменная занимает место в сегменте данных, а не кода?
По-русски - если инитить все переменные до использования ядро будет весить 32Mb

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 16:00 
про это не думал.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено raorn , 12-Июл-10 16:13 
>А вы знаете, что инициализированная переменная занимает место в сегменте данных, а
>не кода?

Перестаньте пороть чушь.  В сегменте кода (.text) переменным не место.  А переменные инициализированные нулём всё равно попадают в .bss.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 16:21 
+1 в .bss

пс: незнаю как поступит компилятор если переменная прописанна и не будет изменяться вообще
ну типа в место константы - обычная переменная


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Ytch , 12-Июл-10 21:32 
>пс: незнаю как поступит компилятор если переменная прописанна и не будет изменяться
>вообще
>ну типа в место константы - обычная переменная

В embedded-платформах обычно, если указан модификатор const, то в отдельной секции .const (точное название зависит от компилятора), а в зависимости от платформы, секция .const вообще может быть помещена в немодифицируемую память (типа flash program memory). Если модификатора const нет, то компиляторы обычно размещают переменные в секции с обычными переменными и инициализирует их при старте (то есть никак не учитывают тот факт, что они никогда не меняются) при этом размер растет, так как занимается двойной объем - сама переменная и данные (или код) для ее инициализации (при этом данные/код для инициализации в работе программы не используются - только один раз при старте).

Если данные инициализированы нулями, то перерасход памяти обычно меньше, так как нули-то хранить не надо, компилятор делает просто цикл при старте, обнуляющий куски памяти.



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено filosofem , 12-Июл-10 22:22 
А зачем не изменяющиеся переменные, значение которых известно при компиляции и которые используются как константы(то есть нет никаких манипуляций с их адресом), вообще в памяти размещать и адресовать, в чем профит?

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 22:48 
вот я об этом же
скорее всего опции оптимизации это учитывают

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Ytch , 12-Июл-10 23:30 
>вот я об этом же
>скорее всего опции оптимизации это учитывают

В некоторых компиляторах учитывают, в некоторых нет. Чтоб не полагаться на такие особенности лучше сразу написать const. А есть такие платформы и компиляторы под них, где даже const написать недостаточно, а надо еще и нестандартные ключевые слова писать (и хорошо если только директивами типа #pragma обойдется).


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Ytch , 12-Июл-10 23:24 
Например, таблица синуса (часто нужна в цифровой обработке сигналов) на несколько килобайт или таблицы для преобразования кодировок.

Естественно, писать const int SuperVal = 5; большого смысла не имеет.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 15-Июл-10 02:55 
>А зачем не изменяющиеся переменные, значение которых известно при компиляции и которые
>используются как константы(то есть нет никаких манипуляций с их адресом), вообще
>в памяти размещать и адресовать, в чем профит?

float *ptr = &3.14159265; // низя


const float PI = 3.14159265;
float *ptr = (float *)PI // можно


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 12-Июл-10 18:36 
не обязательно. переменная может быть инициализирована, а не обнулена в след. строке и пр. кроме всего компайлер выдает предупреждения в случае подозрения отсутсвия инициализации.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 12-Июл-10 16:05 
>Именно. В основном в драйверах и фирмварях.

Да ты что!!!


#include <linux/version.h>
#include <linux/module.h>

int my_init(void ) {

int i;
printk(KERN_DEBUG " TEST: i = %d \n", i);
return 0;
}

module_init(my_init);

MODULE_LICENSE("GPL v2");

# insmod ./test.ko
# dmesg

TEST: i = 0



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 17:17 
1) /tmp/test/hello.c:8: warning: ‘i’ is used uninitialized in this function

2) Jul 12 18:15:59 localhost kernel: init_module() called = -255520756


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 17:41 
>[оверквотинг удален]
>
>module_init(my_init);
>
>MODULE_LICENSE("GPL v2");
>

>
># insmod ./test.ko
># dmesg
>
>TEST: i = 0

соответсвенно из ниже следующих моих комментов - если вывести из блока переменную Ы
вот тогда будет

Jul 12 18:39:29 localhost kernel: init_module() called = 0

+ int i;
int my_init(void ) {

- int i;
printk(KERN_DEBUG " TEST: i = %d \n", i);
return 0;
}


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 13-Июл-10 02:33 
>[оверквотинг удален]
>
>Jul 12 18:39:29 localhost kernel: init_module() called = 0
>
>+ int i;
>int my_init(void ) {
>
>- int i;
> printk(KERN_DEBUG " TEST: i = %d \n", i);
> return 0;
>}

Не хочет...  
INT: i = 0


/*
*
*/
#include <linux/version.h>
#include <linux/module.h>

int i;

int my_init(void ) {

         printk(KERN_DEBUG "INT: i = %d\n", i);
return 0;

}

module_init(my_init);

MODULE_LICENSE("GPL v2");

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.5/lto-wrapper
Target: x86_64-suse-linux
Thread model: posix
gcc version 4.5.0 20100628 [gcc-4_5-branch revision 161494] (SUSE Linux)

# uname -a
Linux suse64 2.6.32.16 #6 SMP PREEMPT Tue Jul 6 21:09:44 MSD 2010 x86_64 x86_64 x86_64 GNU/Linux


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 13-Июл-10 10:49 
что не хочет ???

тут будет 0 - правильно (int i - глобальная)

##########################
#include <linux/version.h>
#include <linux/module.h>

int i;

int my_init(void ) {

         printk(KERN_DEBUG "INT: i = %d\n", i);
return 0;

}

module_init(my_init);

MODULE_LICENSE("GPL v2");
###########################


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 13-Июл-10 12:26 
>что не хочет ???
>тут будет 0 - правильно (int i - глобальная)

Я собственно о том, что не инициализирована переменная не обязана
принимать какие либо значения. Более того если от версии к версии
появляются какие-то постоянные значения это не есть хорошо.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 12:07 
Надеюсь, что нисколько.

Должно быть int i = 0;


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Andrew Kolchoogin , 12-Июл-10 13:00 
Нет, не должно.

Таким образом вы экономите один store на каждый вызов функции. В случае, если это interrupt handler, экономия получается некислая. ;)

"Бездумная" инициализация автоматических переменных свидетельствует о непонимании того, как они обрабатываются.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 13:08 
>Нет, не должно.

Должно. Из-за этого столько багов, что лучше обнулять.

> свидетельствует о непонимании того

а, ну да, конечно. видимо, вы самый большой специалист.

вопрос: вот код
int i;
чему равна i в месте, где эта i используется в первый раз ?

ответ - неизвестно.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 13:24 
Простите, но у вас какие-то дилетантские познания программирования на С. Вы ещё думаю удивитесь когда узнаете сколько в ядре goto. В месте где используется i  первый раз может быть все равно какое у неё значение, потому что использовать i можно первый раз на запись.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 13:32 
простите, уж какие есть :-)
"может быть", "может" - это не те слова, которые следует использовать при разработке надёжного ПО.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено szh , 12-Июл-10 14:14 
вы использовали подмену понятий, разберитесь со смыслом выражения "может быть" в верхнем посте.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 19:12 
ничего я не использовал, смотрите примеры кода и выдержки из спецификаций.

насчёт того, в какой секции располагается такая переменная, действительно не уверен - как-то не было такой проблемы никогда, поэтому не изучал вопрос.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено axe , 12-Июл-10 20:38 
>ничего я не использовал, смотрите примеры кода и выдержки из спецификаций.

похоже что вы видимо никогда ничего на С и не писали, иначе почему вы ничего не знаете о варнингах компилятора?

>насчёт того, в какой секции располагается такая переменная, действительно не уверен -
>как-то не было такой проблемы никогда, поэтому не изучал вопрос.

это стековая переменная... ппц, какой нафиг раздел предварительно инициализированных переменных, люди??? Функция будет не реентерабельной. Не порите чушь.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 20:40 
>похоже что вы видимо никогда ничего на С и не писали, иначе
>почему вы ничего не знаете о варнингах компилятора?

Да с чего вы взяли, что я не знаю ???


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Ytch , 12-Июл-10 21:37 
>это стековая переменная... ппц, какой нафиг раздел предварительно инициализированных переменных, люди??? Функция
>будет не реентерабельной. Не порите чушь.

Уточнение: или стековая или регистровая. Остальное верно.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 20:43 
При разработке надежного ПО на C используют, как минимум, -Wall -pedantic, если на то пошло. И никаких лишних телодвижений делать не надо — проверить что может, а чего не может, способна и машина.

Ну а для реально надежного ПО - как обычно, доказательный подход, Карри-Говард, ATP и все такое.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено mma , 12-Июл-10 13:24 
Это с чего вы решили? В общем как код напишите так у вас и будет - известно или нет. Ну или приведите РЕАЛЬНЫЙ пример когда из ядра где есть этот недостаток, в противном случае это бездумное следование шаблону.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 13:30 
какой недостаток ? что непроинициализирована переменная ? так выше цифра приведена.



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено szh , 12-Июл-10 14:16 
> какой недостаток ? что непроинициализирована переменная ?

нет, где это может привести к ошибке.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено spanasik , 12-Июл-10 19:17 
примера кода из ядра привести не могу, хотя вот посмотрите тут уже "модуль" набросали.

да, я предпочитаю бездумно следовать этому шаблону. более того, ругаюсь очень сильно, когда вижу непроинициализированные при объявлении переменные.

это тупо лучше при отладке, когда каждый раз значение переменной известно, а не случайно, и ломает всё в непредсказуемом порядке.

в общем, пишите софт, пробуйте сами как лучше, я тут высказал своё мнение, имею право. вы пишете софт по-своему - тоже имеете право.



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено PereresusNeVlezaetBuggy , 12-Июл-10 22:34 
>примера кода из ядра привести не могу, хотя вот посмотрите тут уже
>"модуль" набросали.
>
>да, я предпочитаю бездумно следовать этому шаблону. более того, ругаюсь очень сильно,
>когда вижу непроинициализированные при объявлении переменные.

Ну а кому-то удобнее наоборот, когда все переменные компактно объявляются в одном месте, а присваивания идут естественным образом по ходу дела. Это помогает следить за их количеством, что в случае с именно C порой весьма актуально, и отслеживать логику работы функции, не дёргаясь глазами по коду с мыслью "а во что эта хрень была выставлена-то?". И что удобнее читать, вот это:

/* Взято из src/lib/libc/stdio/mktemp.c в OpenBSD-CURRENT */
static int
mktemp_internal(char *path, int slen, int mode)
{
        char *start, *cp, *ep;
        const char *tempchars = TEMPCHARS;
        unsigned int r, tries;
        struct stat sb;
        size_t len;
        int fd;

        len = strlen(path);
        if (len == 0 || slen >= len) {
                errno = EINVAL;
                return(-1);
        }
        ep = path + len - slen;

        tries = 1;
        for (start = ep; start > path && start[-1] == 'X'; start--) {
                if (tries < INT_MAX / NUM_CHARS)
                        tries *= NUM_CHARS;
        }
        tries *= 2;


или вот это?
/* Модифицированная версия */
static int
mktemp_internal(char *path, int slen, int mode)
{
        char *start, *cp;
        size_t len = strlen(path);
        char *ep = path + len - slen;
        char *start = ep;
        const char *tempchars = TEMPCHARS;
        unsigned int r, tries = 1;
        struct stat sb;
        int fd;

        if (len == 0 || slen >= len) {
                errno = EINVAL;
                return(-1);
        }

        for (; start > path && start[-1] == 'X'; start--) {
                if (tries < INT_MAX / NUM_CHARS)
                        tries *= NUM_CHARS;
        }
        tries *= 2;


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

К слову, C99-компиляторы (а объявление переменных в середине кода - это есть C99) тоже не подо все ныне используемые платформы есть...


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 13-Июл-10 02:44 
>>примера кода из ядра привести не могу, хотя вот посмотрите тут уже
>>"модуль" набросали.
>>
>>да, я предпочитаю бездумно следовать этому шаблону. более того, ругаюсь очень сильно,
>>когда вижу непроинициализированные при объявлении переменные.
>
>Ну а кому-то удобнее наоборот, когда все переменные компактно объявляются в одном
>месте, а присваивания идут естественным образом по ходу дела.

Да уж, а то некоторые приплюснутые сишнеги пишут типа такого кода


int func(void) {

int i, j;

for (i = 0; i < LIMIT; i++ )
      j += 2*i;
//  Далее строк 200 кода одной функции
//
...
// и вдруг резко

   int i = 5;
   for ( int j = 10; j < i; j++) // ну не дибилы?!
      {
       //...
    }
//
} // EOF func()


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 14-Июл-10 00:56 
разве gcc не заматерится по поводу двойного объявления переменной? такое возможно разве что при выделении блоков /*{..}*/

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 14-Июл-10 01:00 
>разве gcc не заматерится по поводу двойного объявления переменной? такое возможно разве
>что при выделении блоков /*{..}*/

На i матернётся, на j - нет.

Более того, сработает вот такой маразм


#define LIMIT 25

int main(void) {

        double i;
        long long j[25];

        for ( char i = 0; i < LIMIT; i++ )
                *j += 2*i;
        i = *j;
        for ( int j; j < i; j++);
return *j;
}



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 14-Июл-10 01:57 
обратил внимание только на i, поэнтому не уточнил. :) с j все понятно, ибо в теле цикла.
последний пример вообще стараюсь избегать, стыдно будет за такое перед коллегами.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 14-Июл-10 02:20 
>обратил внимание только на i, поэнтому не уточнил. :)
> с j все понятно, ибо в теле цикла.

Тело цикла это уже иная область видимости? Сублокальная?! :)

А чё ... я не против :) если итераторы будут умирать после окончания цикла.

типа
     for (int i = 0; i < X; i++) {
      Z *= i*i;
     }

     while (int j) {
      X = j+i;      // а тут i уже будет not declared
     }


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено PereresusNeVlezaetBuggy , 14-Июл-10 02:52 
>[оверквотинг удален]
>типа
>     for (int i = 0; i <
>X; i++) {
>      Z *= i*i;
>     }
>
>     while (int j) {
>      X = j+i;    
>  // а тут i уже будет not declared
>     }

Помнится, одно время в C++ так и сделали.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Карбофос , 14-Июл-10 10:49 
>Тело цикла это уже иная область видимости? Сублокальная?! :)

по крайней мере, компайлер должен проглотить j и даже не вякать. такое тоже встречал o_O еще хуже даже видел, когда j объявлена как глобальная O_O потом почему-то начинается неожиданная хрень. :)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 14-Июл-10 19:07 
>>Тело цикла это уже иная область видимости? Сублокальная?! :)
>
>по крайней мере, компайлер должен проглотить j и даже не вякать. такое
>тоже встречал o_O еще хуже даже видел, когда j объявлена как
>глобальная O_O потом почему-то начинается неожиданная хрень. :)

Это называется С99


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено бугага , 12-Июл-10 13:53 
int i;

for (i = 0; i < 10; i++)
{
...
}

какой ужас, это не будет работать :D


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено angel_il , 12-Июл-10 16:33 
нет! этот код может работать неверно в боевых условиях, когда синус 90 гр. достигает трех и более.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 13:58 
>Должно. Из-за этого столько багов, что лучше обнулять.

А не достаточно ли просто быть внимательней, а то напоминает: http://bash.org.ru/quote/396506


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 14:07 
>>"Бездумная" инициализация автоматических переменных свидетельствует о непонимании того, как они обрабатываются.

с чего это вы решили что это автоматическая переменная ???


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 12-Июл-10 16:38 
>>>"Бездумная" инициализация автоматических переменных свидетельствует о непонимании того, как они обрабатываются.
>
>с чего это вы решили что это автоматическая переменная ???

Хватит тролить. Курите маны на GCC.

.... спецификатор переменной всегда является auto, если не указано иного - static, extern или register.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 17:32 
>>>>"Бездумная" инициализация автоматических переменных свидетельствует о непонимании того, как они обрабатываются.
>>
>>с чего это вы решили что это автоматическая переменная ???
>
>Хватит тролить. Курите маны на GCC.
>
>
.... спецификатор переменной всегда является auto, если не указано иного - static, 
>extern или register.
>

покурил (я тя уважаю)
читаем внимательно последний абзац

#########################

Спецификатор класса памяти в объявлении переменной может быть auto, register, static или extern. Если класс памяти не указан, то он определяется по умолчанию из контекста объявления.

Объекты классов auto и register имеют локальное время жизни. Спецификаторы static и extern определяют объекты с глобальным временем жизни.

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

Переменная с классом памяти auto имеет локальное время жизни и видна только в блоке, в котором объявлена. Память для такой переменной выделяется при входе в блок и освобождается при выходе из блока. При повторном входе в блок этой переменной может быть выделен другой участок памяти.

Переменная с классом памяти auto автоматически не инициализируется. Она должна быть проинициализирована явно при объявлении путем присвоения ей начального значения. Значение неинициализированной переменной с классом памяти auto считается неопределенным.

############################################################

ps:

Пример:
    int global_var;
    int func(void)
    { int local_var;                      /* по умолчанию auto  */
      static int *local_ptr=&local_var;   /*  так неправильно   */
      static int *global_ptr=&global_var; /*  а так правильно   */
      register int *reg_ptr=&local_var;   /*  и так правильно   */
    }

В приведенном примере глобальная переменная global_var имеет глобальное время жизни и постоянный адрес в памяти, и этот адрес можно использовать для инициализации статического указателя global_ptr. Локальная переменная local_var, имеющая класс памяти auto размещается в памяти только на время работы функции func, адрес этой переменной не является константой и не может быть использован для инициализации статической переменной local_ptr. Для инициализации локальной регистровой переменной reg_ptr можно использовать неконстантные выражения, и, в частности, адрес переменной local_ptr.



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 17:37 
>>>>"Бездумная" инициализация автоматических переменных свидетельствует о непонимании того, как они обрабатываются.
>>
>>с чего это вы решили что это автоматическая переменная ???
>
>Хватит тролить. Курите маны на GCC.
>
>
.... спецификатор переменной всегда является auto, если не указано иного - static, 
>extern или register.
>

в дополнении читаем внимательно 3 и 4 пункт

1.6.4. Инициализация глобальных и локальных переменных

При инициализации необходимо придерживаться следующих правил:

1. Объявления содержащие спецификатор класса памяти extern не могут содержать инициаторов.

2. Глобальные переменные всегда инициализируются, и если это не сделано явно, то они инициализируются нулевым значением.

3. Переменная с классом памяти static может быть инициализирована константным выражением. Инициализация для них выполняется один раз перед началом программы. Если явная инициализация отсутствует, то переменная инициализируется нулевым значением.

4. Инициализация переменных с классом памяти auto или register выполняется всякий раз при входе в блок, в котором они объявлены. Если инициализация переменных в объявлении отсутствует, то их начальное значение не определено.

5. Начальными значениями для глобальных переменных и для переменных с классом памяти static должны быть константные выражения. Адреса таких переменных являются константами и эти константы можно использовать для инициализации объявленных глобально указателей. Адреса переменных с классом памяти auto или register не являются константами и их нельзя использовать в инициаторах.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Kash , 12-Июл-10 22:01 
>[оверквотинг удален]
>
>4. Инициализация переменных с классом памяти auto или register выполняется всякий раз
>при входе в блок, в котором они объявлены. Если инициализация переменных
>в объявлении отсутствует, то их начальное значение не определено.
>
>5. Начальными значениями для глобальных переменных и для переменных с классом памяти
>static должны быть константные выражения. Адреса таких переменных являются константами и
>эти константы можно использовать для инициализации объявленных глобально указателей. Адреса переменных
>с классом памяти auto или register не являются константами и их
>нельзя использовать в инициаторах.

И как это противоречит процитированному утверждению?
По поводу явной инициализации: не вижу ничего плохого в объявлении переменных без явной инициализации в случае, когда им присваивается значение далее по коду. Есть ли какая-нибудь разница при записи в памяти поверх нулей или поверх мусора? Если же программист попробует использовать не инициализированную переменную, то его об этом известит компилятор, о чем выше писалось неоднократно.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 23:00 
>И как это противоречит процитированному утверждению?
>По поводу явной инициализации: не вижу ничего плохого в объявлении переменных без
>явной инициализации в случае, когда им присваивается значение далее по коду.
>Есть ли какая-нибудь разница при записи в памяти поверх нулей или
>поверх мусора? Если же программист попробует использовать не инициализированную переменную, то
>его об этом известит компилятор, о чем выше писалось неоднократно.

int func(void)
{
    int local_var;                      /* по умолчанию auto  */
    static int *local_ptr=&local_var;   /*  так неправильно   */
.........

тады обьясните почему неправильно ??


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 13-Июл-10 03:03 
>[оверквотинг удален]
>int func(void)
>{
>    int local_var;      
>          
>    /* по умолчанию auto  */
>    static int *local_ptr=&local_var;   /*  так
>неправильно   */
>.........
>
>тады объясните почему неправильно ??

Все правильно, только лишено какой-либо логики, кроме как для теста для компилятора и ОСи.

Глупо инициализировать переменные если они редко будут использоваться:


int func(int a, int b) {

  int i, j;
  
  if ( a < b )
     return -1;

  i = a*b;

  if ( i % 5 )
     return -1;

  j = i % 5;

return i+j;
}

Как видите, при a < b значения i и j пофигу какие.

Все это можно даже упростить до:


int func(int a, int b) {

  if ( a < b )
     return -1;
  if ( (a*b) % 5 )
     return -1;
  return (a*b)+((a*b) % 5);
}


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 13-Июл-10 10:59 
>[оверквотинг удален]
>
 
>int func(int a, int b) {
>
>  if ( a < b )
>     return -1;
>  if ( (a*b) % 5 )
>     return -1;
>  return (a*b)+((a*b) % 5);
>}
>

нет не глупо особенно переменные которые попадают в локальную область видимости (без инициализации в них храниться мусор и порой это может стать причиной ошибки)

для глобальных - да типа "глупо"


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 13-Июл-10 12:34 
>>[оверквотинг удален]
>нет не глупо особенно переменные которые попадают в локальную область видимости (без
>инициализации в них храниться мусор и порой это может стать причиной ошибки)

Какая может возникнуть ошибка, если эту переменную я не использую?
От инициализированной локальной переменной вообще никакого толка.


int func(void) {

int i = 25; // шо такое 25 ?

do {
     i--;
} while ( i > 0 )

}


Заменяется на:

#define LIMIT 25

int func(void) {

int i;

for (i = LIMIT; i > 0; i--) {
}
}



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 13-Июл-10 13:20 
у вменяемых такого рода ошибок не будет

int func(void)
{
    int local_var;                      /* по умолчанию auto  */
    static int *local_ptr=&local_var;   /*  так неправильно   */


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 15-Июл-10 03:21 
>[оверквотинг удален]
>
 
>int func(int a, int b) {
>
>  if ( a < b )
>     return -1;
>  if ( (a*b) % 5 )
>     return -1;
>  return (a*b)+((a*b) % 5);
>}
>

 
inline int func(int a, int b) {

return (a < b) ? -1 : (((a*b) % 5) ? -1 : (a*b)+((a*b) % 5));
}

Гы

 
inline int func(int a, int b) {

return (  ( (a < b) || ((a*b) % 5)) ) ? -1 : ( (a*b) + ((a*b) % 5) )  );
}


гы-гы

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sphynkx , 12-Июл-10 14:10 
>Еще бы за использование "int main()" роялити потребовали и "int i;" запатентовали.

Надо с ними на их же языке говорить, чтоб заткнулись. Взять код какой-то неюниксовой ОСи, ровестницы юникса, найти и предъявить те же конструкции, имена переменных и пр. И пусть потом доказывают, то сами не воры и что "int i;" не сплагиировали ;-))


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Arcturus , 12-Июл-10 16:01 
А может быть вообще какой-то базовый учебник по основам С/unix... :-)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 13-Июл-10 18:30 
>Надо с ними на их же языке говорить, чтоб заткнулись. Взять код
>какой-то неюниксовой ОСи, ровестницы юникса, найти и предъявить те же конструкции,
>имена переменных и пр. И пусть потом доказывают, то сами не
>воры и что "int i;" не сплагиировали ;-))

Ну зачем же так сложно?
Они сами на себя компромат выкатили - пример 251, syslog.h.
Имена констант и комментарии к ним совпадают.
В glibc-2.2.5/misc/sys/syslog.h:
* Copyright (c) 1982, 1986, 1988, 1993
*      The Regents of the University of California.  All rights reserved.
как того и требует лицензия Беркли.
Проследить историю этого файла вплоть до 82-83 годов можно благодаря коллекции МакКузика.

Отсюда следуют ровно две возможности:
- либо в SCO отрезали шапку Беркли (нарушили лицензию)
- либо они сознательно пытались ввести суд в заблуждение, утаивая информацию о происхождении кода


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 13-Июл-10 18:33 
>Они сами на себя компромат выкатили - пример 251, syslog.h.

поправка - пример 247


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено PereresusNeVlezaetBuggy , 13-Июл-10 18:36 
>[оверквотинг удален]
> *      The Regents of the University
>of California.  All rights reserved.
>как того и требует лицензия Беркли.
>Проследить историю этого файла вплоть до 82-83 годов можно благодаря коллекции МакКузика.
>
>
>Отсюда следуют ровно две возможности:
> - либо в SCO отрезали шапку Беркли (нарушили лицензию)
> - либо они сознательно пытались ввести суд в заблуждение, утаивая информацию
>о происхождении кода

А вариант, что это в BSD остался огрызок чужого кода, вы не рассматриваете? Я серьёзно.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 13-Июл-10 20:12 
>А вариант, что это в BSD остался огрызок чужого кода, вы не
>рассматриваете? Я серьёзно.

Нет. syslog.h из glibc-2.2.5 основан на дистрибутиве 4.4BSD-Lite2, который является лицензионно чистым (не содержит проприетарных файлов от AT&T) и был выпущен после судебного разбирательства BSD vs. USL.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено PereresusNeVlezaetBuggy , 13-Июл-10 20:15 
>>А вариант, что это в BSD остался огрызок чужого кода, вы не
>>рассматриваете? Я серьёзно.
>
>Нет. syslog.h из glibc-2.2.5 основан на дистрибутиве 4.4BSD-Lite2, который является лицензионно чистым
>(не содержит проприетарных файлов от AT&T) и был выпущен после судебного
>разбирательства BSD vs. USL.

То есть он появился _после_ того судебного разбирательства? Тогда это радует. :)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 13-Июл-10 21:08 
>>Нет. syslog.h из glibc-2.2.5 основан на дистрибутиве 4.4BSD-Lite2, который является лицензионно чистым
>>(не содержит проприетарных файлов от AT&T) и был выпущен после судебного
>>разбирательства BSD vs. USL.
>
>То есть он появился _после_ того судебного разбирательства? Тогда это радует. :)
>

Если быть совсем точным, то копирайт _сохранился_ (1982, 1986, 1988, 1993), т.е. USL никогда не претендовала на то, что syslog - это их разработка.
А вообще, насколько я сумел понять, ноги syslog растут из sendmail (тоже берклиевская разработка).


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено User294 , 12-Июл-10 14:22 
>Еще бы за использование "int main()" роялити потребовали и "int i;" запатентовали.

Так вот какой код скопировали из Unix в линух?! Блин, этак меня SCO тоже засудит за копипасту :(.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено mvalery , 12-Июл-10 11:42 
Посмотрел первые два документа.
Да. Некоторые идентификаторы совпадают или похожи.
А вот стилистика совсем другая. Чувствуется, что писали разные люди.
Я считаю, что документы готовились, чтобы поразить воображение судей, которые не сильны в программировании, в текстуальном сходстве.
А сходство не удивительно. Т.к. предметная область совпадает.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Anixx , 12-Июл-10 17:40 
Так как имена преременных прописаны в спецификациях ELF.

"Запрашивает Миша Рыцаревъ"
Отправлено ua9oas , 12-Июл-10 11:50 
  Интересно, а могут ли разработчики кода винды что либо заимствовать с кода линукс. А если бы код винды был бы открыт, то для кого и для чего он был бы тогда интересен?

"Запрашивает Миша Рыцаревъ"
Отправлено dimqua , 12-Июл-10 12:01 
Для злоумышленников код венды интересен.

"Запрашивает Миша Рыцаревъ"
Отправлено Cobold , 12-Июл-10 12:34 
поскольку закрыт. А против открытого кода - скучно.

"Запрашивает Миша Рыцаревъ"
Отправлено dimqua , 12-Июл-10 12:58 
Но так проще. А раз все сидят на венде, то и эффективней выходит.

"Запрашивает Миша Рыцаревъ"
Отправлено Dez , 12-Июл-10 17:45 
>поскольку закрыт. А против открытого кода - скучно.

Что мешает стянуть код части винды из сети ? (nt4 и sp3 win 2000)
смотрел когда-то на него, код как код на первый взгляд все самопальное, явных коментов типа GPL или Linux не увидел.



"Запрашивает Миша Рыцаревъ"
Отправлено dimqua , 12-Июл-10 18:16 
> Что мешает стянуть код части винды из сети ? (nt4 и sp3 win 2000)

Ну так ими никто не пользуется почти. Сейчас всем перделки, то есть висту и виндоуз 7 подавай.


"Запрашивает Миша Рыцаревъ"
Отправлено KERNEL_PANIC , 12-Июл-10 12:02 
По сути да, но тогда придется эти продукты делать свободными. А вот с БСД уже много чего нагло забрали.

"Запрашивает Миша Рыцаревъ"
Отправлено dimqua , 12-Июл-10 12:05 
Почему нагло? Лицензия такая, супер-пупер свободная.

"Запрашивает Миша Рыцаревъ"
Отправлено Vitaly_loki , 12-Июл-10 12:30 
Вы бы еще Public Domain наглостью назвали... Нагло было бы забрать из GPL что-нить, а из BSD это не наглость

"Запрашивает Миша Рыцаревъ"
Отправлено KERNEL_PANIC , 12-Июл-10 12:53 
Нагло я имею ввиду, что хотя бы в эбауте написали чтото типа "...и проект ВSD..."

"Запрашивает Миша Рыцаревъ"
Отправлено dimqua , 12-Июл-10 13:00 
Наивно было бы ждать такого от MS :)

"Запрашивает Миша Рыцаревъ"
Отправлено Michael Shigorin , 12-Июл-10 16:01 
"Такое" они как раз местами пишут.  Подозреваю, что даже везде или почти везде, где нужно.

"Запрашивает Миша Рыцаревъ"
Отправлено User294 , 12-Июл-10 17:11 
Только почему-то это всегда окаызывается местом где не светит солнце и куда редкий юзер забредает. Поэтому почти все юзеры уверены что все это - Copyright (с) Microsoft Corporation, XXXX-YYYY. All rights reserved.

"Запрашивает Миша Рыцаревъ"
Отправлено User294 , 12-Июл-10 14:24 
>А если бы код винды был бы открыт, то для кого и для чего он был бы тогда интересен?

Код винды уперли еще несколько лет назад. Как минимум винтукея. Большой кус ядра и ряда программ. Учтя что остальные ядра от него ничем принципиально не отличаются - в общем то сорс винды в природе есть. Только юзать его - проблематично. В итоге он вызвал интерес только у тех кто анализирует код. Можно даже найти разбор кода ноутпада где-то в ЖЖ.


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Кодир , 12-Июл-10 11:54 
SCO унылы, как протухший помидор - тоже ради интереса глянул код. Названия а-ля "buf", "len", "maxlen" можно использовать чуть ли не для половины строковых алгоритмов, делать на этой основе какие-то выводы - это позориться собственной некомпетентностью. Хотя я тоже склоняюсь к мысли, что не ради правды этот процесс.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Гога , 12-Июл-10 12:24 
Посмотрел первые 7 ссылок. Жестко. Надеюсь, хотя бы пару программистов привлекут в качестве экспертов в суд. Если логика функции подразумевает: проверить правильность указателя и вернуть данные согласно коду функции либо код ошибки, то трудно извернуться и написать ее как-то иначе чем тут написано. Блин, у меня половина программ получается попадает под лицензии типа SCO :(.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Raja , 12-Июл-10 12:07 
Я так понимаю что это подобно тому, как если бы оспаривалось право получать роялти за использование прямоугольных окон и других элементов управления, таких как кнопки.
Ребята, это же бред полный, нельзя даже заикаться о сходстве - область то одна и та же.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Anixx , 12-Июл-10 15:17 
Ну так Микрософт же платила Эпплу за прямоугольные окна.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 12:20 
открыл 4 случайных примера. дальше даже смотреть не стал.

Однозначно все это происки Империи зла.
нет там никакого соответствия. и копипасты там нет.
возможно имел место рерайтинг;)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено ideafix , 12-Июл-10 12:35 
Помнится сне, толи даймлер толи еще кто-то отстегнул очень крупную сумму SCO, чтобы застраховаться от претензий... там нулей было гораздо больше чем три.

"суета..."
Отправлено Аноним , 12-Июл-10 12:43 
Один ученик сказал Мастеру Фу: "Нам говорят, что фирма SCO удерживает реальную власть над Unix".
Мастер Фу кивнул в знак согласия.
Ученик продолжал: "Однако нам также говорят, что другая фирма, OpenGroup, также удерживает реальную власть над Unix".
Мастер Фу кивнул в знак согласия.
"Как такое возможно?" — спросил ученик.
Мастер Фу ответил: "SCO действительно владеет кодом Unix, но код Unix — это не сама Unix. OpenGroup действительно владеет маркой Unix, но название Unix — это не сама Unix".
"В чем же тогда сущность Unix?" — спросил студент.

Мастер Фу ответил: "Не в коде. Не в имени. Не в мышлении. Вообще ничего материального.
Вечное изменение без перемен".
"Сущность Unix проста и пуста. Поскольку она проста и пуста, она сильнее тайфуна".
"Повинуясь естественным законам, она непреклонно расцветает в умах программистов,
ассимилируя конструкции в свою собственную природу. Всякое программное обеспечение, которое хотело бы конкурировать с Unix, должно стать таким, как Unix: пустым, пустым, глубоко пустым, абсолютно лишенным содержания потоком!"
Услышав это, ученик достиг просветления.

// Искусство программирования Unix, Эрик С. Реймонд


"суета..."
Отправлено pavlinux , 12-Июл-10 16:54 
> // Искусство программирования Unix, Эрик С. Реймонд

Ага, щаз, у него столько мозга нет.
Он тоже скопипастил у Конфуция из "Книги Перемен"


"суета..."
Отправлено Пр0х0жий , 14-Июл-10 18:06 
>> // Искусство программирования Unix, Эрик С. Реймонд
>Ага, щаз, у него столько мозга нет.
>Он тоже скопипастил у Конфуция из "Книги Перемен"

Нет. Он применил универсальный закон, который понял Конфуций, к конкретной ситуации.
Никто не может быть выше Истины. Выше Истины, только Истина.


"суета..."
Отправлено madfox , 12-Июл-10 16:57 
>[оверквотинг удален]
>Вечное изменение без перемен".
>"Сущность Unix проста и пуста. Поскольку она проста и пуста, она сильнее
>тайфуна".
>"Повинуясь естественным законам, она непреклонно расцветает в умах программистов,
>ассимилируя конструкции в свою собственную природу. Всякое программное обеспечение, которое хотело бы
>конкурировать с Unix, должно стать таким, как Unix: пустым, пустым, глубоко
>пустым, абсолютно лишенным содержания потоком!"
>Услышав это, ученик достиг просветления.
>
>// Искусство программирования Unix, Эрик С. Реймонд

класс! Я только что достиг просветления!!!


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Frank , 12-Июл-10 12:52 
Я правильно понял, что достаточно переименовать переменные, и SCO уже не при делах? ;) Курам^W программерам на смех!

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 13:13 
#include <sys/types.h> (Tab331) - это по-любому спертый у SCO участок кода ;)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 13:36 
string.h (Tab 242) o_O

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Dorif , 12-Июл-10 14:07 
Ну и где там сходство? В именах переменных и функций? Но хотелось бы заметить, что реализованны там одни и те же функции по- разному, ибо даж ёжикам понятно. что elf и *elf- совсем не одно и то же, а значит и функции, с ними оперирующие должны работать не совсем одинаково. А сходство названий проистекает из того, что это софт, используемый в одних и тех же целях. Они бы ещё на мелкомягких в суд подали. ЛОЛ, а не доказательство вины Novell и IBM.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Zenitur , 12-Июл-10 14:15 
О, супер! Код показали. А то надоели уже абстрактно обвинять в том, что "у вас где-то что-то нарушено, а ну платите деньги". Потому что когда изместно, где и что может хотя бы в теории вызвать вопросы - например, в функции обработки 16-ричных контрольных сумм в памяти, сразу же можно проблемный код заменить. Вариантов написано много

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено User294 , 12-Июл-10 14:30 
А еще запретим всем писать int i в своих программах. Это ж копирайченый код SCO, правда? :)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sw00p aka Jerom , 12-Июл-10 14:22 
дела тут не в переменных а в реализацих

допустим смотрите про poll - что в юниксах и линуксе разная реализация ???? (не путать с epoll в линухе)

пс: отсюда выходит что если одинаковый принцип реализации то ссответсвенно программист будет придумывать более вменяемые имена переменным и функциям/ (ну и ещё один фактор - у кого в первые была реализация - что луноходы код юниксов не глазели ????)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено anonymous from da LOR , 12-Июл-10 14:45 
Это чё, типа ВНЕЗАПНО стандарт POSIX стал закрытым, что они такую хрень предъявляют?

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Роман , 12-Июл-10 15:28 
Да уж... а если в слове "хлеб" сделать 4 правки, то получится "пиво".

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 12-Июл-10 16:35 
с примера tab-330.pdf я ржал аки конь и катался по полу...
там, среди прочего, был отмечен следующий плагиат:

#ifndef _LIBELF_H
#define _LIBELF_H

#include <sys/types.h>


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено pavlinux , 12-Июл-10 16:50 
Лучшая реклама Linux за последние годы!

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено alz , 12-Июл-10 16:53 
в Tab247 уже поинтереснее =)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 13-Июл-10 18:13 
>в Tab247 уже поинтереснее =)

ага. :)
код, написанный в Беркли и распространявшийся под Berkley лицензией...
Что и было написано в отрезанном лоерами из SCO заголовке файла. В glibc-2.2.5 копирайт Беркли сохранен без изменений.

*
*      @(#)syslog.h    8.1 (Berkeley) 6/2/93
*/

#define _PATH_LOG       "/dev/log"

/*
* priorities/facilities are encoded into a single 32-bit quantity, where the
* bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
* (0-big number).  Both the priorities and the facilities map roughly
* one-to-one to strings in the syslogd(8) source code.  This mapping is
* included in this file.
*
* priorities (these are ordered)
*/
#define LOG_EMERG       0       /* system is unusable */
#define LOG_ALERT       1       /* action must be taken immediately */
#define LOG_CRIT        2       /* critical conditions */
#define LOG_ERR         3       /* error conditions */
#define LOG_WARNING     4       /* warning conditions */
#define LOG_NOTICE      5       /* normal but significant condition */
#define LOG_INFO        6       /* informational */
#define LOG_DEBUG       7       /* debug-level messages */



"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено mmm62 , 12-Июл-10 17:55 
tab251

12: /* Copyright (c) 1987, 1988 Microsoft Corporation */
13: /* All Rights Reserved */
14:
15: /* This Module contains Proprietary Information of Microsoft */
16: /* Corporation and should be treated as Confidential. */


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено User294 , 12-Июл-10 20:20 
И, главное, какой код то сперли! Аж 2 определения констант, и те - для совместимости. Все, ворье однозначно! (интересно, а авторов wine тогда надо как минимум расстрелять?)

38: /*
39: * The following are symbolic constants required for
40: * X/Open Conformance. They are the equivalents of
41: * the constants above.
42: */
43:
44: #define UL_GETFSIZE 1 /* get file limit */
45: #define UL_SETFSIZE 2 /* set file limit */


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Sphynkx , 12-Июл-10 21:28 
> (интересно, а авторов wine тогда
>надо как минимум расстрелять?)

Живьем!! И на смерть!!
А стремление к совместимости объявить преступной наклонностью!!


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено thesame , 13-Июл-10 16:57 
ага.
открываю исходники OSF/1, нахожу там /usr/opt/OSC200/src/usr/include:

/*
* COMPONENT_NAME: (LIBCSYS) Standard C Library System Functions
*
* FUNCTIONS:
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1985, 1989
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/

#ifndef _ULIMIT_H_
#define _ULIMIT_H_

#include <standards.h>

#ifdef _XOPEN_SOURCE

#ifdef _NO_PROTO
extern long ulimit();
#else
#if defined(__STDC__) || defined(__cplusplus)
#if defined(__cplusplus)
extern "C"
{
#endif
extern long ulimit(int, ...);
#if defined(__cplusplus)
}
#endif
#endif
#endif

#define UL_GETFSIZE     1       /* get max file size limit */
#define UL_SETFSIZE     2       /* set max file size limit */

#endif /* _XOPEN_SOURCE */

#ifdef _OSF_SOURCE
#define UL_GETBREAK     3       /* get max break (data space) limit */
#endif /* _OSF_SOURCE */


#endif /* _ULIMIT_H_ */

а у IBM копирайт-то пораньше будет!


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено myc , 12-Июл-10 18:34 
http://www.mcbride-law.com/wp-content/uploads/2010/07/Tab-24...
Эм strcasecmp() и strncasecmp() это вообще POSIX.
http://www.opengroup.org/onlinepubs/009695399/basedefs/strin...

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 18:36 
!!!"Бездумная" инициализация автоматических переменных свидетельствует о непонимании того, как они обрабатываются.!!!

Господа, а в новости речь ведь не об этом)))

а о копирастии, вернемся к теме)


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 18:49 
Я немного не в теме, поясните за что это за файл

/home/nutt/Consulting/Boies/204/S-ulimit-2.h

где стоят копирайты мелкософта и для чего он нужен?
и как там этот копирайт оказался?


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено bill , 12-Июл-10 19:05 
Это кусок xenix.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 12-Июл-10 19:38 
почитал про Xenix-- связи SCO с Империей зла наметились давным давно))

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Vasia , 12-Июл-10 20:46 
Ну вот если из всех команд командной строки Винды убрать названия Юник-совых команд, то на самом деел останется всего три-пять команд, и внутренних и внешних. Что же тогда было раньше - M$ или Unix? С еще более интетесной стороны - если перменные называются одинаково как в закрытой так и в открытой ОС, то имеют место два случая. Первый - профуканны исходники закрытой ОС. Второй - притянуты за уши исходники открытой ОС. Теперь просьба к SCO - скомпилировать свою закрытую ОС с вставками из открытой ОС и получить идентичный код своей закрытой ОС. А вот воздух потить только потом.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 13-Июл-10 05:49 
Кодирующим "своё" сейчас должно быть вообще неуютно. Нужно перечитать тонны кода, чтобы случайно не сплагиатить очевидный алгоритм или имена переменных/констант/функций/классов и т.п. Мало того, нужно изловчиться и написать код так, что бы не был похож не на что существующее и в то же время алгоритм соответсвовал поставленной задаче. За примерами ходить далеко не нужно, мало ли нас, начинающих кодеров не писали "своих" алгоритмов сортировки? Мы все сидели в разное время в разных местах и не знали друг о друге, но парадигма заставляла нас писать не просто похожий код, но в большинстве своём, совпадающий символ в символ...
От капиталлизма до маразма, видимо, меньше одного шага.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Вася , 13-Июл-10 08:23 
"За примерами ходить далеко не нужно"

Из личной жизни: мы с коллегой 10 лет сидели за соседними столами, потом жизнь развела. Через 5 лет встретились и в шутку нас попросили написать одну и туже простенькую программу. Так не только алгоритм, но и имена процедур, функций и переменных совпали на 99% не только по именам, но и по верхнему/нижнему регистрам


"Хм, что-то мне знакомо в имени этого юриста Kevin McBride."
Отправлено Ueff , 13-Июл-10 11:16 
До него, например, именем Kevin звали одного ирландского священника в 7м веке.
http://en.wikipedia.org/wiki/Kevin_of_Glendalough
Сплагиатил юрист себе имечко. Надо бы заплатить.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 14-Июл-10 06:41 
Да, их аргументы неубедительны, но если они уже выиграют когда-нибудь, то пересмотров после этого никаких не будет. Потом SCO купит балмер. После этого предлагаю шарахнуть по ним из тополя, чтоб не наглели :)

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено ffsdmad , 13-Июл-10 10:59 
имхо, это большое заблуждение макбрайта, видимо он не понимает в программировании ничего иначе понял бы, что над пошутили показывая наиболее частые и общие приёмы кода, это всё равно, что показывать английский и русский тексты (даже ближе), есть и буквы одинаковые по виду и слова похожие и там всякие точки, тире и зпт., к тому же авторы текстов имели одного преподавателя и читали одинаковые книжки с примерами и вообще

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

мда уж, лоханулся


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено szh , 13-Июл-10 11:41 
у него никаких заблуждений, заработал кучу денег слив компанию SCO.
Лоханулись те кто его слушали и акции SCO в 2003-2004 году покупали.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 14-Июл-10 06:50 
>Юрист Кевин МакБрайд (Kevin McBride), брат бывшего главы компании SCO Group, раскрыл завесу тайны над участками кода, скопированными из UNIX в Linux.

Молодец юрист! Осталось спросить исходники ядра у джобса. С него-то можно поболее бабла вытянуть. Он вроде бы не нищщий красноглазик, скелет имеет титановый, пластмассовые органы, компьютеры, телевоны и ось для богатых гомосексуалистов производит :)

А переменные-то у него ворованные! Вот сволочь проприетарная, совсем обнаглел :D


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 29-Сен-11 04:34 
а дарвин и так открыт)))
ttp://darwinbuild.macosforge.org/

А вот "int i;" --- это цветочки)))

"return 0;" vs "return NULL;" в tab-333

За свою жизнь я не написал ни одной програмы на С/С++ сложнее хелоувовда, которая бы выдержала такой контроль плагиата)))


"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено АнонимМ , 14-Июл-10 09:00 
Да совпадение названий функций strcasecmp и strncasecmp это жестко (документ 241). Чистый троллинг причем толстый троллинг, даже ананимы с лора на него не повелись бы.

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 14-Июл-10 16:17 
Ещё припомните кто мышку у ксерокса скомуниздил

"Продемонстрирован код, который по мнению SCO был скопирован ..."
Отправлено Аноним , 14-Июл-10 22:17 
ога....
и про Next еще вспомните.. и про то кто, что у них комуниздил...