LINUX.ORG.RU

История изменений

Исправление PPP328, (текущая версия) :

И зачем использовать sh для операций вида «поменять бит в регистре» городить командную оболочку, если это запросто делается на си (если кодер не полный овощ конечно)?

А ты еще попробуй найти кодера не овоща:

  union bitdata {
    struct {
      unsigned int bit1 : 1;
      unsigned int bit2 : 1;
      unsigned int bit3 : 1;
      unsigned int bit4 : 1;
      unsigned int bit5 : 1;
      unsigned int bit6 : 1;
      unsigned int bit7 : 1;
      unsigned int bit8 : 1;
    };
    unsigned char byte;
  } first_byte, second_byte;


    for ( j = 0; j < bytes_count; j++ ) {
      unsigned char t;

      ret = gzread( gz_fd, &t, sizeof( t ) );
      if ( ret != sizeof( t ) ) {
    printf( "Failed to read file %s: %s\n", argv[i], strerror( errno ) );
    gzclose( gz_fd );
    return EXIT_FAILURE;
      }

      first_byte.byte  = t;
      second_byte.byte = ready_bytes[j];

      first_byte.bit1 = first_byte.bit1 == 0 && second_byte.bit1 == 0 ? 0 : 1;
      first_byte.bit2 = first_byte.bit2 == 0 && second_byte.bit2 == 0 ? 0 : 1;
      first_byte.bit3 = first_byte.bit3 == 0 && second_byte.bit3 == 0 ? 0 : 1;
      first_byte.bit4 = first_byte.bit4 == 0 && second_byte.bit4 == 0 ? 0 : 1;
      first_byte.bit5 = first_byte.bit5 == 0 && second_byte.bit5 == 0 ? 0 : 1;
      first_byte.bit6 = first_byte.bit6 == 0 && second_byte.bit6 == 0 ? 0 : 1;
      first_byte.bit7 = first_byte.bit7 == 0 && second_byte.bit7 == 0 ? 0 : 1;
      first_byte.bit8 = first_byte.bit8 == 0 && second_byte.bit8 == 0 ? 0 : 1;

      ready_bytes[j] = first_byte.byte;
    }

Это на проде 10+ лет.

Исходная версия PPP328, :

И зачем использовать sh для операций вида «поменять бит в регистре» городить командную оболочку, если это запросто делается на си (если кодер не полный овощ конечно)?

А ты еще попробуй найти кодера не овоща:

  union bitdata {
    struct {
      unsigned int bit1 : 1;
      unsigned int bit2 : 1;
      unsigned int bit3 : 1;
      unsigned int bit4 : 1;
      unsigned int bit5 : 1;
      unsigned int bit6 : 1;
      unsigned int bit7 : 1;
      unsigned int bit8 : 1;
    };
    unsigned char byte;
  } first_byte, second_byte;

    for ( j = 0; j < bytes_count; j++ ) {
      unsigned char t;

      ret = gzread( gz_fd, &t, sizeof( t ) );
      if ( ret != sizeof( t ) ) {
    printf( "Failed to read file %s: %s\n", argv[i], strerror( errno ) );
    gzclose( gz_fd );
    return EXIT_FAILURE;
      }

      first_byte.byte  = t;
      second_byte.byte = ready_bytes[j];

      first_byte.bit1 = first_byte.bit1 == 0 && second_byte.bit1 == 0 ? 0 : 1;
      first_byte.bit2 = first_byte.bit2 == 0 && second_byte.bit2 == 0 ? 0 : 1;
      first_byte.bit3 = first_byte.bit3 == 0 && second_byte.bit3 == 0 ? 0 : 1;
      first_byte.bit4 = first_byte.bit4 == 0 && second_byte.bit4 == 0 ? 0 : 1;
      first_byte.bit5 = first_byte.bit5 == 0 && second_byte.bit5 == 0 ? 0 : 1;
      first_byte.bit6 = first_byte.bit6 == 0 && second_byte.bit6 == 0 ? 0 : 1;
      first_byte.bit7 = first_byte.bit7 == 0 && second_byte.bit7 == 0 ? 0 : 1;
      first_byte.bit8 = first_byte.bit8 == 0 && second_byte.bit8 == 0 ? 0 : 1;

      ready_bytes[j] = first_byte.byte;
    }

Это на проде 10+ лет.