<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107486</guid>
        <pubDate>Thu, 06 Mar 2003 10:02:31 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107486</link>
        <description><![CDATA[the_Shadow: Ну, может, кому и интересно будет...<br>Ссылка в тему:<br>http://web.onda.com.br/orso/<br>Это ссылка на проект SARG (в девичестве sqmgrlog). <br>Сырцы (для анализа, если надобно будет -- там же).<br>К стати, на этой страничке есть несколько всяких-разных логгеров.<br>При необходимости можно будет взыть и на базе сих сырцов чего-нибудь свое изготовить.<br>Настройка к сему чуду (по-русски) http://unixdocs.rags.ru/sqmgrlog.html. К стати, сам SARG имеет русский интерфейс. Упс! Я хотел скаазть -- гененрирует файлы отчетов по-русски...<br><br>Вместе с тем замечу, что, IMHO, анализировать логи серверов не есть гуд в смысле расхождения реального траффика и того траффика, который показывает тот же SQUID. Он не учитывает всякие retrasmittion'ы и все такое (&quot;конверт&quot; пакета TCP/IP, ...).<br><br>Так что, если будут расхождения в счетах от провайдера и то, что кажет СКВИД -- учитывайте то, что провайдер, как правило, считает не размер &quot;страницы&quot; в байтах, он учитывает <strong class='tag-b'>весь</strong> трафик, т.е. и служебный в том числе, потребный для передачи этой страницы вам. <br><br>Enjoy!]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107484</guid>
        <pubDate>Tue, 04 Mar 2003 21:02:43 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107484</link>
        <description><![CDATA[Aleks: Я типа наконецто уговорил, да?<br>#include &lt;vector.h&gt;<br><br>class SquidUser<br>{<br>public: <br>string strName;<br>// requre<br> &nbsp;SquidUser(void);<br> &nbsp;SquidUser(const char*);<br> &nbsp;SquidUser(const SquidUser&amp;);<br>};<br> ещё надо оператор присваивания перегрузить, но это тоже что и конструктор копий...<br>typedef vector&lt;SquidUser&gt; SquidUser;<br><br>теперь в проге просто объявляем массив<br>SquidUser squidUser;<br>добавляем элемент : push_back(...)<br>кол-во эл-тов: size()<br>можно и так<br>int i = 0;<br>while(i &lt;= squidUser.size())<br>{<br> do_any(squidUser.strName);<br>i++;<br>}<br><br>короче вот ився тебе инфа к размышлению, я уснул.<br>]]></description>
        <author>Aleks</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107482</guid>
        <pubDate>Tue, 04 Mar 2003 20:44:10 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107482</link>
        <description><![CDATA[Nwm: Ну объясни мне на наглядном примере - что там сделано для людёй?<br><br>:)]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107480</guid>
        <pubDate>Tue, 04 Mar 2003 20:30:44 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107480</link>
        <description><![CDATA[Aleks: Тут путей несколько:<br>1) Перегрузи оперцию... как она там называется... короче вот эту &quot;[]&quot;<br>2) Используй STL там уже всё сделано для людей!<br>]]></description>
        <author>Aleks</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107478</guid>
        <pubDate>Tue, 04 Mar 2003 20:19:21 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107478</link>
        <description><![CDATA[Nwm: Получается список... мне нужен массив. :)]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107477</guid>
        <pubDate>Tue, 04 Mar 2003 20:13:30 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107477</link>
        <description><![CDATA[Aleks: the_Shadow Экзамл я привёл из Си проги, насчёт небезопасности данного кода... что ж озадочило меня твоё высказывание но лезть в старый код не охота, работает и х...н с ним.<br>2 Nwm зачем так злишся, да! Уж больно расплывчато ты начал &quot;пишу сам не знаю чего, на не известном мне Си&quot;. Так вот Си все глюки в основном выползают из-за неумения работать с памятью. Поэтому я и предложил тебе использовать STL, там уже реализованны в виде классов динамические массивы, списки и т.д., добавление, удаление элементов и поиск по ним.<br>Кстати твой массив совсем не динамический, хоть он у тебя в куче выделяется - он свегда одного и того же размера &quot;usercount&quot;.<br>Ну если ты загнался по чистому языку то вот тебе реализация на самом деле динамического связного списка - переделай в динамический массив...<br>допустим:<br>модифицирую твою структуру:<br>typedef struct struser<br> &nbsp; &nbsp; { &nbsp;<br> &nbsp; &nbsp; &nbsp; char ip[16];<br> &nbsp; &nbsp; &nbsp; char name[16];<br> &nbsp; &nbsp; &nbsp; long bytes ;<br> &nbsp; &nbsp; &nbsp; typedef struct struser* pNext;<br> &nbsp; &nbsp; } SquidUser;<br><br>// Create user<br>SquidUser* createSquidUser(char* _name, char* _ip, long _bytes)<br>{<br> &nbsp; &nbsp; &nbsp;SquidUser* pUser = NULL;<br> &nbsp; &nbsp; &nbsp;pUser = (SquidUser*)malloc(sizeof(SquidUser));<br> &nbsp; &nbsp; &nbsp;if(pUser)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memset(pUser, 0, sizeof(SquidUser));<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strcpy(pUser-&gt;name, _name);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strcpy(pUser-&gt;ip, _ip);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pUser-&gt;bytes = _bytes;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;return pUser;<br>}<br><br>// Add user to list<br>void addSquidUser(SquidUser** ppHead, SquidUser* pNew)<br>{<br> &nbsp; &nbsp; &nbsp;SquidUser* pUser;<br> &nbsp; &nbsp; &nbsp;if(ppHead == NULL)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*ppHead == pNew;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pUser = *ppHead;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while(pUser-&gt;pNext)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pUser = pUser-&gt;pNext;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pUser-&gt;pNext = pNew;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;return;<br>}<br><br>// Освободить память занимаемую списком<br>void freeSquidUser(SquidUser** ppHead)<br>{<br> &nbsp; &nbsp; &nbsp;SquidUser *pNext, *pUser;<br> &nbsp; &nbsp; &nbsp;if(ppHead)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pUser = *ppHead;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while(pUser)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pNext = pUser-&gt;pNext;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;free(pUser);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pUser = pNext;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;return;<br>}<br><br>// Поиск юзера (рез-т надо проверять на NULL)<br>SquidUser* findSquidUser(SquidUser* pHead, char* pchName)<br>{<br> &nbsp; &nbsp; &nbsp;while(pHead)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(strcmp(pHead-&gt;name, pchName) == 0)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pHead = pHead-&gt;pNext;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;return pHead;<br>}<br><br>Пишу и думаю может тебе это и не нужно ни фига?... Ладно может кто ошибки найдёт и мне клёво будет!<br><br>ЗЫ: Если вдруг какие переменные или имена вдруг вылеэут откуда не возьмись - не удевляйся я ведь это на скорую руку из своих исходников переделал и наверняка что то пропустил.<br>]]></description>
        <author>Aleks</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107474</guid>
        <pubDate>Tue, 04 Mar 2003 18:32:20 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107474</link>
        <description><![CDATA[Nwm: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Aleks, 04.03.03, 17:50:14</span><div class='quote '>2the_Shadow: ещё один клиент созрел (что за день) :D<br><br>вот к примеру как я парсю лог<br></div></div><br><br> Читается примерно так: &quot;...что за день... вот я один раз в жизни спарсил один какой-то простецкий лог, и крутой до неузнаваемости.... а тут лезут всякие... с динами.... динамичес... динамическими массивами...&quot;.<br><br> Короче, ставлю вопрос иначе. Мне нужен динамический массив определённой структуры. Мой случай работает, но почему-то...<br><br><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>int &nbsp;adduser (char *ip)<br>{ <br> &nbsp; &nbsp;if (indexof (ip)) { return 0; exit; }<br> &nbsp; &nbsp; &nbsp; else<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { usercount++;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; realloc (users, &nbsp;usercount*sizeof(struser));<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strcpy (users[usercount].ip,ip);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br> &nbsp; &nbsp; &nbsp; <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return usercount;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br> <br>}<br></div></div><br><br> Вот эта фигня вешает цикл, который парсит лог. Если закомментировать //strcpy, то всё нормально. Т.е. у меня что-то с памятью происходит не то? <br><br> В общем, интересует реализация одномерного динамического массива какой-нибудь структуры.]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107472</guid>
        <pubDate>Tue, 04 Mar 2003 16:23:57 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107472</link>
        <description><![CDATA[the_Shadow: <strong class='tag-b'>Nwm'у</strong><br>А, да, невнимательно прочел... ;D Спать хочу. :(<br>Сейчас вот закончу писать и пойду. Sorry, так сказать... :)<br><br>Да и потом:<br><br><strong class='tag-b'>Обоим! И Aleks'у и Nwm'у!</strong><br>А, коль скоро, ты используешь С++, то зачем тебе вообще связываться с <strong class='tag-b'>fprintf/fscanf</strong>? В С++ для этого есть спец. средства типа <strong class='tag-b'>iostream</strong>.<br><br>Смешанное программирование -- <strong class='tag-b'>большая ошибка</strong>, парни! Дело в том, что <strong class='tag-b'>синтаксически</strong> вы оба правы. Компилер проглотит и fscanf(), и многое другое из &quot;чистого&quot; С. Но вот <strong class='tag-b'>семантически</strong> у вас бардак. Т.е. вы оба применяете функции из, по сути дела, другого языка... Т.е. теряется смысл С++.<br><br>2 <strong class='tag-b'>Aleks.</strong> <br>Хэх! ;D вот и тут есть проблема. В твоем сырце... Дело в том, что использование функций как <strong class='tag-b'>fgets</strong>, так и <strong class='tag-b'>gets</strong> давным-давно признано потенциально небезопасным. Именно на этих функциях (на использовании их уязвимостей) и строятся атаки типа &quot;переполнение буффера&quot;. Тогда уж проверяй каждый раз -- а именно ли 256 байт ты прочел из файла?<br>Для преодоления этих граблей есть какая-то библиотека -- сейчас не помню, а вспоминать лень -- глаза слипаются и пальцы не гнутся. потом расскажу... ;D<br><br><span class="tag-color tag-color-named" data-value="red" style="color: red">Не флейми.</span> ;) У парня проблема, которую он, согласись решает руками и головой. Это отличает постановку проблемы от той, что есть у... посетителя Форума по имени COOOOL.<br><br>2 <strong class='tag-b'>Nwm.</strong> <br>Спать хочу... Аххххххх (и, зевая, тормозит комп...)<br>Да! Не переругайтесь тут... Финские программисты... (тьфу ты!) парни... ;D ;D ;D<br>Завтрева продолжим разбор поле... сырцов.]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107470</guid>
        <pubDate>Tue, 04 Mar 2003 15:37:29 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107470</link>
        <description><![CDATA[Nwm: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>the_Shadow, 04.03.03, 18:11:28</span><div class='quote '>He can't use an stl (Standard Template Library), because he is writing on C, I guess... </div></div><br><br>А вот эта строчка тебе... i guess... ни о чём не говорит? :)<br><br>struser * users = new struser[usercount]; <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^^^<br><br>Эта new имхо только в c++ возможна?]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107467</guid>
        <pubDate>Tue, 04 Mar 2003 15:34:26 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107467</link>
        <description><![CDATA[Nwm: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>the_Shadow, 04.03.03, 18:11:28</span><div class='quote '>He can't use an stl (Standard Template Library), because he is writing <span class="tag-color tag-color-named" data-value="red" style="color: red">in</span> C, I guess... </div></div><br><br> У тебя раскладку выбило? Или чего это? Или это не раскладка - что-то другое, более серьёзное? :)<br><br>He can use any library he ha<span class="tag-color tag-color-named" data-value="red" style="color: red">s</span>. And any compiler.<br><br> Если как-то можно сделать динамический массив из структуры с помошью стандартных cpp средств - то я буду рад, если вы ткнёте меня туда мордой. I guess.]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107465</guid>
        <pubDate>Tue, 04 Mar 2003 15:11:28 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107465</link>
        <description><![CDATA[the_Shadow: He can't use an stl (Standard Template Library), because he is writing <span class="tag-color tag-color-named" data-value="red" style="color: red">in</span> C, I guess...]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107464</guid>
        <pubDate>Tue, 04 Mar 2003 15:06:18 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107464</link>
        <description><![CDATA[Nwm: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Aleks, 04.03.03, 17:58:33</span><div class='quote '>Блин почему все начинающие програмеры с упорством маньяков изобретают велосипед? Используй stl для таких вещей как списки, массивы, мэпы и множество проблем уйдёт сами сабой.</div></div><br><br>1. Чё ещё за stl? <br>2. fgets ничем не помог.]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107462</guid>
        <pubDate>Tue, 04 Mar 2003 14:59:59 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107462</link>
        <description><![CDATA[Nwm: А если делать <br> &nbsp;<br> &nbsp;strcpy (users[usercount].ip,ip); <br><br>то опять повись на пустом месте...<br>]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107461</guid>
        <pubDate>Tue, 04 Mar 2003 14:58:33 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107461</link>
        <description><![CDATA[Aleks: Блин почему все начинающие програмеры с упорством маньяков изобретают велосипед? Используй stl для таких вещей как списки, массивы, мэпы и множество проблем уйдёт сами сабой.]]></description>
        <author>Aleks</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107458</guid>
        <pubDate>Tue, 04 Mar 2003 14:50:14 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107458</link>
        <description><![CDATA[Aleks: 2the_Shadow: ещё один клиент созрел (что за день) :D<br><br>2Nwm:<br>С++ всёже надо поизучать немного.<br>А что касается твоей проблемы в &quot; int parselog(char *logfilename) &quot; - вставь перед &nbsp; fscanf (....) вызов функции чтения строки из файла - fgets(buff, 256, log);<br>вот к примеру как я парсю лог<br> &nbsp;do<br> &nbsp;{<br> &nbsp; if(!fgets(fw_str, 256, ip_firewall)) break;<br> &nbsp; //get count data from curent string<br> &nbsp; sscanf(fw_str, &quot;\%s\t\%s\t\%s\t\%[^]\n&quot;, fw_number, fw_pocket, fw_byte, fw_text);<br> &nbsp; //it is this rule?<br> &nbsp; if(atoi(fw_number) == number_rule)<br> &nbsp; {<br> &nbsp; &nbsp;//yes it is this rule!!!<br> &nbsp; &nbsp;temp_pocket = atol(fw_pocket);<br> &nbsp; &nbsp;temp_byte = atol(fw_byte);<br> &nbsp; &nbsp;if(temp_pocket &lt; pocket_count)<br> &nbsp; &nbsp;{<br> &nbsp; &nbsp; pocket_count += temp_pocket;<br> &nbsp; &nbsp; byte_count += temp_byte;<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;else<br> &nbsp; &nbsp;{<br> &nbsp; &nbsp; pocket_count += (temp_pocket - pocket_count);<br> &nbsp; &nbsp; byte_count += (temp_byte - byte_count);<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;break;<br> &nbsp; }<br> &nbsp;}<br> &nbsp;while(!feof(ip_firewall));<br>]]></description>
        <author>Aleks</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107457</guid>
        <pubDate>Tue, 04 Mar 2003 14:44:35 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107457</link>
        <description><![CDATA[Nwm: Дык наверху весь сырец! :)<br><br> Понял, что у меня sprintf там глючит. Однако, если написать в adduser<br><br> &nbsp;users[usercount].ip = ip;<br><br>вместо<br><br> &nbsp;sprintf (users[usercount].ip,&quot;\%s&quot;,ip);<br><br>будем иметь ашипку:<br><br>incompatible types in assignment of `char *' to `char[16]']]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107455</guid>
        <pubDate>Tue, 04 Mar 2003 14:39:15 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107455</link>
        <description><![CDATA[the_Shadow: Ммммм... Отмыль-ка сырец... Гляну. ;)<br>Верну с комментариями... ;)]]></description>
        <author>the_Shadow</author>
        <category>*nix</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107453</guid>
        <pubDate>Tue, 04 Mar 2003 14:32:26 +0000</pubDate>
        <title>C/C++ ... i need help :)</title>
        <link>https://forum.sources.ru/index.php?showtopic=11960&amp;view=findpost&amp;p=107453</link>
        <description><![CDATA[Nwm: Ваяю нечто... (Шедоу знает, что. :)) ...нечто, не вполне пока понятное. Вообще - мне нужен маленький биллинг моей сетки. В частности же мне нужно лог обработать... В C/C++ - ничего не шарю покамест. Нужен мне динамический массив пользователей...<br><br>struct struser<br> &nbsp; &nbsp; { <br> &nbsp; &nbsp; &nbsp; char ip[16];<br> &nbsp; &nbsp; &nbsp; char name[16];<br> &nbsp; &nbsp; &nbsp; long bytes ;<br> &nbsp; &nbsp; } ;<br>int usercount=0;<br>struser * users = new struser[usercount];<br><br>//Вот тут я проверяю наличие в массиве пользователя:<br><br>int indexof (char *ip)<br> &nbsp;{ int idx;<br> &nbsp;for (idx=1; idx&lt;=usercount; idx++) &nbsp;if (strcmp (ip,users[idx].ip) == 0) {return idx; exit; }<br> &nbsp; return 0;<br> &nbsp;}<br><br><br>// А вот тут я добавляю нового пользователя.<br>int &nbsp;adduser (char *ip)<br>{ <br><br> &nbsp;if (indexof (ip)) { return 0; exit; }<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { usercount++;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;realloc (users, &nbsp;usercount*sizeof(struser));<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sprintf (users[usercount].ip,&quot;\%s&quot;,ip);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return usercount;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>}<br><br>// А вот тут-то и грабли.<br>int parselog(char *logfilename)<br>{ &nbsp; <br><br> &nbsp; &nbsp;char time[16],duration[16],client_ip[16],result[60],method[16],url[255],rfc931[255],code[60],type[255];<br> &nbsp; &nbsp;long bytes;<br> &nbsp; &nbsp;FILE *log; <br> &nbsp; &nbsp;<br> &nbsp; &nbsp;log = fopen(logfilename,&quot;r&quot;);<br><br>while (!feof(log)) <br> &nbsp;{<br> &nbsp; &nbsp;fscanf (log, &quot;\%s \%s \%s \%s \%d \%s \%s \%s \%s \%s&quot;, <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;time, duration, client_ip, result, &amp;bytes, method, url, rfc931,code,type);<br><br> &nbsp; &nbsp;printf ( &quot;\%s \%s \%s \%s \%d \%s \%s \%s \%s \%s \n&quot;, <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;time, duration, client_ip, result, bytes, method, url, rfc931,code,type);<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;adduser (&quot;tralalalalala&quot;);}<br> &nbsp; &nbsp;<br> &nbsp; &nbsp;fclose (log);<br>}<br><br><br>int main(int argc, char *argv[])<br>{<br><br>parselog (&quot;/usr/local/squid/var/logs/access.log.0&quot;);<br><br>}<br><br><br>-----------------------------------------------------------<br><br> В общем, если убрать из тела функции parselog вызов adduser, то всё пройдёт замечательно. :) (Чему уж там проходить-то :) <br><br>А вот если этот вызов оставить, то прога... зависает. Зависает на определённой строчке лога, и х<span class="tag-color tag-color-named" data-value="red" style="color: red">...</span>ит её постоянно, т.е. не переходит на следующую. Ctrl+c её обрубает, но обида и непонимание остаётся...<br><br> Что я делаю не так? Может, это всё из-за realloc? :)]]></description>
        <author>Nwm</author>
        <category>*nix</category>
      </item>
	
      </channel>
      </rss>
	