abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:11 | Nová verze

    Google Chrome 156 byl prohlášen za stabilní. Přehled novinek v poznámkách k vydání. Opraveno bylo 353 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 20:22 | IT novinky

    Indická společnost eMudhra po bezpečnostním incidentu, tj. kompromitaci soukromých klíčů osmi mezilehlých certifikátů své certifikační autority, opouští globální byznys s SSL/TLS certifikáty.

    Ladislav Hagara | Komentářů: 4
    včera 15:44 | Bezpečnostní upozornění

    Dle Phoronixu zveřejnila společnost Trend Micro prostřednictvím programu Zero Day Initiative (ZDI) několik hlášení bezpečnostních zranitelností přímo na veřejném mailing listu LKML, přestože některé chyby dosud nemají opravu začleněnou do hlavní větve jádra. Mezi hlášenými problémy jsou dvě zranitelnosti s hodnocením CVSS 9.0, týkající se SMB Direct a KSMBD, které mohou umožnit vzdálené spuštění kódu. Další hlášení se týkají … více »

    vencour | Komentářů: 0
    včera 15:33 | Nová verze

    Správce hesel KeePassXC byl vydán ve verzi 2.8.0. Přechází na Qt 6, podporuje vkládání hesel s Waylandem, rychlé odemykání pomocí Polkitu nebo možnost nastavení klávesových zkratek (seznam změn).

    ʚĭɞ 🍉 | Komentářů: 0
    včera 15:22 | Nová verze

    Databáze DuckDB (Wikipedie) byla vydána ve verzi 2.0.0 LTS. S kódovým názvem Cinnamon Teal (čírka skořicová). S vyladěným protokolem Quack.

    Ladislav Hagara | Komentářů: 0
    včera 11:11 | Bezpečnostní upozornění

    V implementaci Broadcom 802.11 byla zjištěna chyba ve zpracování WPS/EAP, týká se to SDK od roku 2010. Broadcom podle výzkumníka Quentina Kaisera odmítl CVE přidělit. Modemy Huawei a Technicolor jsou používány i v ČR, v LTE routerech, běžných domácích routerech a firemních přístupových bodech, jejich současný počet a zranitelnost konkrétních verzí však zatím neznáme. Více detailů a demo. GitHub / Broadcom 802.11 SDK Detection Toolkit.

    vencour | Komentářů: 5
    včera 05:11 | Nová verze

    Byla vydána nová verze 10.8 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přibyl balíček DietPi WireGuard.

    Ladislav Hagara | Komentářů: 0
    21.10. 21:22 | Pozvánky

    Oslavte vydání openSUSE Leap 16.1 s námi v Praze! Ve středu 4. listopadu 2026 (den po vydání Leapu 16.1) vás zveme na malou oslavu vydání openSUSE Leap 16.1 do pražské kanceláře SUSE. Připravili jsme pro vás dvě krátké přednášky: … více »

    lkocman | Komentářů: 1
    21.10. 16:44 | Bezpečnostní upozornění

    Dle plánu bylo PHP vydáno v nových verzích 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Opraveny jsou kritické zranitelnosti CVE-2026-109618 a CVE-2026-109619 aneb PHP2Shell.

    Ladislav Hagara | Komentářů: 12
    21.10. 11:55 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-2.1 a 24.04-1.5. S opravou kritických zranitelností.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2898 hlasů
     Komentářů: 33, poslední 20.10. 23:44
    Rozcestník

    Dotaz: Escapované znaky jako argumenty v shellu a C

    15.9.2005 22:37 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Escapované znaky jako argumenty v shellu a C
    Přečteno: 455×
    Existuje nějaká funkce v C, která dokáže nahradit řetězec "\n" znakem konec řádku '\n' (samozřejmě i ostatní backslashed sekvence, jako '\t', ...)? Problém je, že parametry v shellu se předávají tímto způsobem - pokud chci konec řádku '\n', dostanu dva znaky '\' a 'n'.

    Tj. mám program foo -o "x=%x\ny=%y" a textové části se tisknou fputs(f,stdout);. Výstupem je tedy x=3\ny=4.
    When your hammer is C++, everything begins to look like a thumb.

    Odpovědi

    15.9.2005 22:47 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Escapované znaky jako argumenty v shellu a C
    Takových funkcí je spousta... Ale ve standardní knihovně není žádná, pokud se ptáš na tohle.
    15.9.2005 22:51 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Escapované znaky jako argumenty v shellu a C
    Vzhledem k tomu, že to má být do pingu, tak by se mi hodilo něco pod BSD licencí, jinak si to budu muset napsat sám, nebo tuhle featurku oželet (lsof to taky neumí, jak jsem zjistil).
    When your hammer is C++, everything begins to look like a thumb.
    15.9.2005 23:17 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Escapované znaky jako argumenty v shellu a C
    Dávám tuto implementaci do public domain. Je asi bugovitá, protože jsem ji právě napsal z hlavy. Neumí \xAB a \012, ale to snad tak nevadí...
    #include <stdio.h>
    #include <string.h>
    
    int
    main(int argc,
         char *argv[])
    {
        while (*(++argv)) {
            const char *s = *argv, *p;
            char c;
    
            while ((p = strchr(s, '\\'))) {
                printf("%.*s", p - s, s);
                s = p+1;
                if (!(c = *s)) {
                    fprintf(stderr, "String ends with a backslash\n");
                    break;
                }
                switch (c) {
                    case '\\': c = '\\'; break;
                    case '0': c = '\0'; break;
                    case 'a': c = '\a'; break;
                    case 'b': c = '\b'; break;
                    case 'e': c = '\x1b'; break;
                    case 'f': c = '\f'; break;
                    case 'n': c = '\n'; break;
                    case 'r': c = '\r'; break;
                    case 't': c = '\t'; break;
                    case 'v': c = '\v'; break;
    
                    default:
                    fprintf(stderr, "Unknown escape `%c'\n", c);
                    break;
                }
                putchar(c);
                s++;
            }
            puts(s);
        }
    
        return 0;
    }
    
    Lepší by bylo něco, co převede string na string -- což v principu lze i printf() funkcemi, ale je to otrava.
    15.9.2005 23:37 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Escapované znaky jako argumenty v shellu a C
    Vzhledem k uvažovanému použití je ale lepší dělat strcspn(string, "%\\") a expandovat obojí zároveň, jen se musíš rozhodnout, jak interpretovat dva různé escape znaky vedle sebe...
    15.9.2005 22:47 #Tom
    Rozbalit Rozbalit vše Nejsem si jist, jestli jsem to pochopil...
    Napadá mě akorát tohle:
    #include <stdio.h>
    int main() {
      char buffer[128], *p;
      sprintf(buffer, "Ahoj\n");
      for (p = buffer; *p != '\0'; p++)
        printf("%02x ", *p);
      printf("\n");
      return 0;
    }
    
    Vypíše se toto:
    41 68 6f 6a 0a
    
    15.9.2005 22:56 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Nejsem si jist, jestli jsem to pochopil...
    Jde o to, že ze shellu dostanu "Ahoj\\n", tj řetězec o délce 6 se znaky 'A','h','o','j','\\','n'. No a já potřebuji funkci, která nahradí dvojznak "\\n" za konec řádku '\n' - tj, výsledný řetězec bude mít 5znaků (Ahoj+konec řádku).
    When your hammer is C++, everything begins to look like a thumb.
    16.9.2005 00:20 #Tom
    Rozbalit Rozbalit vše Re: Nejsem si jist, jestli jsem to pochopil...
    Tak jsem trošku pozapomněl, co se dělá už při překladu a co za běhu. Tohle už je lepší:
    #include <stdio.h>
    
    int tab[] = {
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      /* \% */'\%', -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,/* \0 */'\0',-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,'\\',-1,-1,-1,-1,
      /* \a */'\a', /* \b */'\b', -1,-1,/* \e */'\e', /* \f */'\f',
      -1,-1,-1,-1,-1,-1,-1,/* \n */'\n', -1,-1,-1,/* \r */'\r',-1,
      /* \t */'\t', -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
      -1,-1,-1,-1,-1,-1,-1,-1,-1 };
    
    char *zpracuj_lomitka(char *str) {
      unsigned char *a, *b;
      if (str == NULL) return NULL;
      for (a = b = str; *a != '\0'; a++, b++)
        if (*a == '\\' && tab[a[1]] >= 0)
          *b = tab[*++a];
        else
          *b = *a;
      *b = '\0';
      return str;
    }
    
    int main() {
      char *p, str[] = "Ahoj!\\a\\b\\e\\f\\n\\r\\t\%\\\\\\0";
      for (p = str; *p != '\0'; p++)
        printf("%02x ", *p);
      printf("\n");
      zpracuj_lomitka(str);
      for (p = str; *p != '\0'; p++)
        printf("%02x ", *p);
      printf("\n");
      return 0;
    }
    
    Přepisuje se přímo zdrojový řetězec. Možná to proto hodí segfault (což udělá určitě, když dám místo str[] jen *str), ale ta funkce by měla být jinak v pořádku.
    15.9.2005 22:51 0
    Rozbalit Rozbalit vše Re: Escapované znaky jako argumenty v shellu a C
    Resim to prostym pouzitim sscanf.
    15.9.2005 23:02 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Escapované znaky jako argumenty v shellu a C
    Mohl bys to, prosím, trochu rozvést? Nějak nevím, jak by mi sscanf mohl pomoci.
    When your hammer is C++, everything begins to look like a thumb.

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.