Top secrets sources NedoPC pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_NONSTDC_NO_DEPRECATE
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>
typedef unsigned int u32;
typedef unsigned char u8;

static u8 buf[0x1000];

int main(int argc, char *argv[])
{
    u32 cs32 = 0;

    if(argc < 2)
    {
        puts("usage: csum32 input.bin");
        return -1;
    }

    int fi = open(argv[1], O_RDONLY | O_BINARY);
    int len = filelength(fi);
    int n = len / sizeof(buf);
    int m = len % sizeof(buf);
    for(int i = 0; i < n; i++)
    {
        if(read(fi, buf, sizeof(buf)) < 0)
        {
            puts("error reading input file");
            close(fi);
            return -1;
        }
        for(int i = 0; i < sizeof(buf); i++)
            cs32 += buf[i];
    }

    if(m)
    {
        if(read(fi, buf, m) < 0)
        {
            puts("error reading input file");
            close(fi);
            return -1;
        }
        for(int i = 0; i < m; i++)
            cs32 += buf[i];
    }
    close(fi);

    int fo = open("csum32.bin", O_CREAT | O_TRUNC | O_WRONLY | O_BINARY, S_IREAD | S_IWRITE);
    if(write(fo, &cs32, 4) < 0)
        puts("error writing output file");
    close(fo);
    return 0;
}