Смещение бита файл

Править: ответьте полностью переписанный согласно комментариям

Проблема могла быть связана с SELinux. Можно работать, например. sestatus проверять, включено ли это или отключено.

Для maildir доставки, постфиксных изменений в соответствующем пользователе, таким образом, целевой каталог должен быть перезаписываем пользователем. Это, кажется, уже имеет место. По причине конфиденциальности я предлагаю chmod -R o-rwx /var/spool/mail/*

Только для полноты: Если mbox файлы используются, каталог шпульки должен быть перезаписываем mail группа, при помощи которой Вы добираетесь chmod -R g+rwX /var/spool/mail.

1
15.11.2012, 00:25
1 ответ

Попробуйте это:

#include <stdio.h>
#include <stdlib.h>

#define SIZE (1024*1024)

int main (int argc, char *argv[])
{
  FILE *from = fopen(argv[1], "rb");
  FILE *to = fopen(argv[2], "wb");
  int nbits = atoi(argv[3]);
  int offs_bytes = nbits/8;
  int shift_bits = nbits%8;
  unsigned char *buf = malloc(SIZE);
  size_t res, pos, i;

  for (pos=0; pos<offs_bytes; pos++)
    buf[pos] = 0;

  buf[pos++] = 0;

  while ((res = fread(buf+pos, 1, SIZE-pos, from))) {
    for (i=0; i < res; i++) {
      buf[pos-1] |= (buf[pos] >> shift_bits) & 0xFF;
      buf[pos] = buf[pos] << (8 - shift_bits);
      pos++;
    }
    fwrite(buf, 1, pos-1, to);
    buf[0] = buf[pos-1];
    pos = 1;
  }
  fwrite(buf, 1, 1, to);
  fclose(from); fclose(to);
  return 0;
}

(Простой алгоритм, никакая проверка ошибок, едва протестированная, и т.д.... [обычные протесты]).

3
27.01.2020, 23:29
  • 1
    выглядит многообещающим.. просто ищите некоторые ошибки.. к сожалению, это добавляет нулевой байт после каждого РАЗМЕРА байты –  mykhal 15.11.2012, 15:22
  • 2
    Прошу прощения. Типичная off-1 ошибка. Попробуйте сейчас. –  angus 15.11.2012, 15:42

Теги

Похожие вопросы