The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"на шо тут вас с s/// на Си то?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"на шо тут вас с s/// на Си то?"
Сообщение от vengrslon Искать по авторуВ закладки(ok) on 21-Июл-04, 18:05  (MSK)
зачем-то я стал править сорсы squida чтоб напрямую писал в mysql
(перловаго парсера не хватало, штоли?)
вот скажем так я выдерну server из url на Perl
(такая заморчка чтоб всякие ftp:\\login:pass@ftp-servak тоже )
хитрее не придумалося...
s/^(ftp\:\/\/\w+\:\w+\@|\w+\:\/\/)([a-z0-9_\-\.]+[a-z]{2,5}).*$/$2/;


ну вот
а на Си-то как сделать то?
без встраивания перла в си ибо зря

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "на шо тут вас с s/// на Си то?"
Сообщение от vnp emailИскать по авторуВ закладки(??) on 22-Июл-04, 03:59  (MSK)
>зачем-то я стал править сорсы squida чтоб напрямую писал в mysql
>(перловаго парсера не хватало, штоли?)
>вот скажем так я выдерну server из url на Perl
>(такая заморчка чтоб всякие ftp:\\login:pass@ftp-servak тоже )
>хитрее не придумалося...
>s/^(ftp\:\/\/\w+\:\w+\@|\w+\:\/\/)([a-z0-9_\-\.]+[a-z]{2,5}).*$/$2/;
>
>
>ну вот
>а на Си-то как сделать то?
>без встраивания перла в си ибо зря

regcomp, regexec... man regex, в общем

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "regexp конешно ищет но зачем изобретать самовар"
Сообщение от vengrslon Искать по авторуВ закладки(ok) on 22-Июл-04, 11:51  (MSK)
/*
* Quick-n-dirty host extraction from a URL.  Steps:
*      Look for a colon
*      Skip any '/' after the colon
*      Copy the next SQUID_MAXHOSTNAMELEN bytes to host[]
*      Look for an ending '/' or ':' and terminate
*      Look for login info preceeded by '@'
*/
char *
urlHostname(const char *url)
{
    LOCAL_ARRAY(char, host, SQUIDHOSTNAMELEN);
    char *t;
    host[0] = '\0';
    if (NULL == (t = strchr(url, ':')))
        return NULL;
    t++;
    while (*t != '\0' && *t == '/')
        t++;
    xstrncpy(host, t, SQUIDHOSTNAMELEN);
    if ((t = strchr(host, '/')))
        *t = '\0';
    if ((t = strchr(host, ':')))
        *t = '\0';
    if ((t = strrchr(host, '@'))) {
        t++;
        xmemmove(host, t, strlen(t) + 1);
    }
    return host;
}
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру