#include #include static unsigned int ustar_header_chksum(const void *buffer, int sign) { const char *p = (const char *)buffer; unsigned int chksum = 0; while (p < (const char *)buffer + strlen(buffer)) { if (sign) chksum += *p++; else chksum += (unsigned char)*p++; } return chksum; } int main(int argc, char** argv) { const char* teststring = "żółte źrebię"; printf("%u\n", ustar_header_chksum(teststring, 0)); printf("%u\n", ustar_header_chksum(teststring, 1)); return 0; }