The OpenNET Project / Index page

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




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


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

  • на шо тут вас с s/// на Си то?, !*! vnp, 03:59 , 22-Июл-04 (1)
    >зачем-то я стал править сорсы 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, в общем

    • regexp конешно ищет но зачем изобретать самовар, !*! vengrslon, 11:51 , 22-Июл-04 (2)
      /*
      * 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;
      }



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

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