Hello! On Friday 21 August 2009 02:37:44 Stanislav Maslovski wrote: > То есть, код будет весьма интересно "работать" даже в случае > числа в третьем аргументе: > > select isinnet( '172.16.1.23', '172.16.1.0', '56' ) например ;-) > > > Следовало бы вернуть NULL, что есть более концептуально верно. > > Концептуально верно будет, имхо, переписать. Да, проверок входных данных явно не хватало :-) Добавил, заодно код упростил, а то вложенные if не есть хорошо. Заодно сделал проверку типа данных:
sqlite> select isinnet( '172.16.1.23', '172.16.1.0', 56 ); sqlite> select isinnet( '172.16.1.23', '172.16.1.0', 32 ); 0 sqlite> select isinnet( '172.16.1.23', '172.16.1.0', '32' ); sqlite> select isinnet( '172.16.1.23', '172.16.1.0', '255.255.255.0' ); 1 sqlite> select isinnet( '172.16.1.23', '172.16.1.0', '255.255.255.255' ); 0 Ну и дописал пару-тройку тестов. Новую версию и деб-пакет выложил. Best regards, Alexey Pechnikov. http://pechnikov.tel/