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í
×
včera 12:11 | Komunita

V Praze na Fakultě informačních technologií ČVUT probíhá openSUSE Conference 2018. Přednášky lze sledovat také online. Aktuální dění lze sledovat na Twitteru. Stisknutím zeleného tlačítka bylo dnes dopoledne vydáno openSUSE Leap 15.0.

Ladislav Hagara | Komentářů: 2
včera 11:44 | Komunita

Na Steamu probíhá do 28. května akce s názvem Spring Cleaning (Jarní úklid). V rámci akce lze hrát hry Don't Starve Together, Cities: Skylines, Tyranny, Borderlands 2, Middle-earth: Shadow of Mordor a Left 4 Dead 2 běžící na Linuxu zdarma [GamingOnLinux].

Ladislav Hagara | Komentářů: 2
24.5. 23:23 | Humor

Nová služba České pošty nazvaná Bezpečné úložiště nabízí až 100GB kapacitu pro "bezpečnou správu Vašich dat pod patronací důvěryhodného partnera Česká pošta".

… více »
Lol Phirae | Komentářů: 55
24.5. 22:14 | Bezpečnostní upozornění

Nova kritická hrozba VPNfilter bola zistená po dlhšiej spolupráce Talos s verejnými i súkromnými bezpečnostnými agentúrami. VPNfilter ohrozuje približne 500 000 zariadení v približne 54 krajinach. Zasiahnutí výrobcovia sú Linksys, MikroTik, NETGEAR, TP-Link (SOHO), QNAP (NAS). Správanie malwaru je nebezpečnej povahy, čo môže v určitých prípadoch spôsobiť škody veľkého rozsahu. Často tieto zariadenia sú na perimetri sieťe bez ochrany.

ewew | Komentářů: 5
24.5. 21:55 | Pozvánky

CSNOG (Czech and Slovak Network Operators Group), první československé setkání síťových operátorů, se uskuteční 11. a 12. června v Brně. Akce je určena poskytovatelům internetového připojení, síťovým operátorům, provozovatelům registrů, internetovým odborníkům a všem zájemcům o internetové a síťové technologie. Program je zaměřený na odborná, technická témata jako například síťová architektura, bezpečnost sítí, zpracování dat, DNS a další. Nutná je registrace.

Ladislav Hagara | Komentářů: 0
24.5. 21:33 | Komunita

Na Humble Bundle lze získat počítačovou hru, simulátor hackování, Hacknet (Wikipedie, YouTube) běžící také v Linuxu zdarma. Tentokrát je ke stažení také verze bez DRM a navíc soundtrack. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
23.5. 20:11 | Zajímavý software

Alexandre Julliard oznámil jménem vývojového týmu Wine vydání první verze 1.0 knihovny vkd3d určené pro překlad volání Direct3D 12 na Vulkan. Zdrojové kódy vkd3d jsou k dispozici pod licencí LGPLv2.1+.

Ladislav Hagara | Komentářů: 1
23.5. 19:33 | Komunita

Dnešním dnem lze účet Firefoxu chránit dvoufázovým ověřováním (2FA). Implementován byl standard TOTP (Time-based One-Time Password).

Ladislav Hagara | Komentářů: 0
23.5. 15:17 | Pozvánky

Od pátku 25. 5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spoustu zajímavých přednášek, workshopů a také na Release Party nového openSUSE Leap 15.0. Na stejném místě proběhne v sobotu 26. 5. i seminář o bezpečnosti CryptoFest.

Jendа | Komentářů: 0
23.5. 13:33 | Zajímavý software

Drawpile je svobodný multiplatformní program pro kreslení podporující společné kreslení několika uživatelů. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3+. Drawpile i Drawpile Server jsou ke stažení také ve formátu AppImage. Stačí tedy nastavit právo na spouštění a spustit.

Ladislav Hagara | Komentářů: 0
Používáte pro některé služby inetd?
 (35%)
 (23%)
 (42%)
Celkem 155 hlasů
 Komentářů: 5, poslední 22.5. 16:46
    Rozcestník

    Dotaz: porovnavani souboru

    3.5.2005 19:47 Bobr
    porovnavani souboru
    Přečteno: 52×
    Dobry den, predelavam jeden program na linux a potreboval bych poradit jak porovnavat 2 binarni soubory v C.Chtel bych pouzit fce fread a pak memcmp pro porovnani bufferu. Sice jsem neco zkousel ale vzdy neuspesne. Pokousel jsem se i neco vyguglit ale taky neuspesne. Volat externi program (diff) take nemohu pac pozdeji budu muset program prekompilovat i na windows. Dekuji vsem za rady. S pozdravem Bobrik

    Odpovědi

    3.5.2005 19:51 Michal Kubeček
    Rozbalit Rozbalit vše Re: porovnavani souboru
    Ach jo. To je jako házet hrách na stěnu. Co jste zkoušel? Co to znamená neúspěšně?
    3.5.2005 19:59 Bobr
    Rozbalit Rozbalit vše Re: porovnavani souboru
      #define BLOCK_SIZE 1024
      char block1[BLOCK_SIZE];
      char block2[BLOCK_SIZE];
      FILE *fr1, *fr2;
      int readed;
      int same_file = 0;
    
      fr1= fopen(config_file,"rb");
      fr2= fopen("temp_config_bin","rb");
    
      while( ((readed = fread(block1, sizeof(char), BLOCK_SIZE, fr1) ) == BLOCK_SIZE) ){
       if( fread(block2, sizeof(char), BLOCK_SIZE, fr2) == BLOCK_SIZE ){
        if( memcmp(block1, block2, BLOCK_SIZE) != 0 ){
         same_file = 1;
        }
       } else {
        same_file = 1;
        if(ferror(fr2) != 0)
         printf("%s: error: can't read file temp_config_bin !\n", prog_name);
       }
      }
    
    Yin avatar 3.5.2005 20:11 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
    Rozbalit Rozbalit vše Re: porovnavani souboru
    #define BUF_SIZE 1024
    FILE *fr1, *fr2;
    char buf1[BUF_SIZE], buf2[BUF_SIZE];
    size_t rs1, rs2;
    int same_files = 1;

    fr1 = fopen...
    fr2 = fopen...

    while(!(feof(fr1) || feof(fr2))) {
      rs1 = fread(buf1, sizeof(char), BUF_SIZE, fr1);
      rs2 = fread(buf2, sizeof(char), BUF_SIZE, fr2);

      if(rs1 != rs2 || memcmp(buf1, buf2, BUF_SIZE) != 0) {
        same_files = 0;
        break;
      }
    }
    Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
    3.5.2005 20:25 Michal Kubeček
    Rozbalit Rozbalit vše Re: porovnavani souboru
    V tom porovnání byste jako třetí argument memcmp měl použít rs1 (nebo rs2), jinak budete u posledního bloku (není-li délka souboru násobkem BUF_SIZE) porovnávat i části bufferů, do kterých se nic nenačetlo. Pokud bude poslední blok zároveň prvním (délka souborů stejná a menší než BUF_SIZE), může se stát, že váš program označí stejné soubory za různé.

    P.S. sizeof(char) je vždy 1, je to definováno normou; a z hlediska efektivity bude vhodnější fread(buf1, BUF_SIZE, 1, fr1) než fread(buf1, 1, BUF_SIZE, fr1)

    Yin avatar 3.5.2005 20:35 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
    Rozbalit Rozbalit vše Re: porovnavani souboru
    dobry postreh... ale aby som uplne chapal... ak zmenim poradie tych dvoch, precita sa naraz 1-krat 'kus dat' o dlzke BUF_SIZE.. ak nie bude sa citat BUF_SIZE-krat 'kus dat' o dlzke 1?
    Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
    3.5.2005 20:39 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: porovnavani souboru
    Glibc to čte stejně po čtyřech kilech (resp. asi po PAGE_SIZE) :-)
    3.5.2005 20:46 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
    Rozbalit Rozbalit vše Re: porovnavani souboru
    Hledat se mi to teď nechce, prostě
    info '(libc)Stream Buffering'
    
    Yin avatar 3.5.2005 20:30 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
    Rozbalit Rozbalit vše Re: porovnavani souboru
    hned na zaciatku by si mohol urobit stat() na tie dve subory, zistit ich velkosti a porovnat ich. A taktiez by si mohol z struct stat vytiahnut velkost bloku suboru na danom fs a tym (mozno aj rapidne) urychlit citanie.

    #import <sys/stat.h>
    struct stat sb1, sb2;
    size_t buf_size;

    stat(filename1, &sb1);
    stat(filename2, &bs2);

    if(sb1.st_size == sb2.st_size) {
      buf_size = sb1.st_blksize;
      
      // dynamicky alokovat buf a buf2, napr. cez alloca()
      // zvysok codu (fopen, while, fclose)
    } else {
      same_files = 0;
    }
    Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
    3.5.2005 20:00 Bobr
    Rozbalit Rozbalit vše Re: porovnavani souboru
    Stale to i 2 stejne soubory, vyhodi jako jine
    3.5.2005 21:54 Bobr
    Rozbalit Rozbalit vše Re: porovnavani souboru
    Tak uz se mi to s pomoci vas vsech povedlo naprogramovat.Prikladam sem jeste cely kod pokud by nekdo jiny resil stejny problem. Jeste jednou vam vsem velice dekuji za pomoc. Bobrik.
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/stat.h>
    
    int main(int argc, char *argv[])
    {
      FILE *fr1, *fr2;
      char *buf1, *buf2;
      size_t rs1, rs2;
      int same_files = 1;
      struct stat sb1, sb2;
      size_t buf_size;
      
      stat("file1.txt", &sb1);
      stat("file2.txt", &sb2);
    
      if(sb1.st_size == sb2.st_size) {
                    
        buf_size = sb1.st_size;
       
        buf1= alloca(buf_size);
        buf2= alloca(buf_size);
       
        fr1 = fopen("file1.txt","rb");
        fr2 = fopen("file2.txt","rb");
    
        while(!(feof(fr1) || feof(fr2))) {
                          
          rs1 = fread(buf1, sizeof(char), buf_size, fr1);
          rs2 = fread(buf2, sizeof(char), buf_size, fr2);
    
          if(rs1 != rs2 || memcmp(buf1, buf2, buf_size) != 0) {
            same_files = 0;
            break;
          }
    
        }
       
        fclose(fr1);
        fclose(fr2);    
            
      } else {
        same_files= 0;
        printf("Size is not the same.\n");
        system("PAUSE");
        exit(0);
      }  
      same_files?printf("The file is not different\n"):printf("The file is different\n");
      system("PAUSE");	
      return 0;
    }
    

    Založit nové vláknoNahoru

    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.