HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: //usr/local/qlibs/byte.c
#include "byte.h"

/**
	@file	byte.c
	@author djb
	@brief byte manipulation functions
*/

unsigned int byte_chr(char *s,register unsigned int n,int c)
{
  register char ch;
  register char *t;

  ch = c;
  t = s;
  for (;;) {
    if (!n) { break; } if (*t == ch) { break; } ++t; --n;
    if (!n) { break; } if (*t == ch) { break; } ++t; --n;
    if (!n) { break; } if (*t == ch) { break; } ++t; --n;
    if (!n) { break; } if (*t == ch) { break; } ++t; --n;
  }
  return t - s;
}

void byte_copy(register char *to,register unsigned int n,register char *from)
{
  for (;;) {
    if (!n) { return; } *to++ = *from++; --n;
    if (!n) { return; } *to++ = *from++; --n;
    if (!n) { return; } *to++ = *from++; --n;
    if (!n) { return; } *to++ = *from++; --n;
  }
}

void byte_copyr(register char *to,register unsigned int n,register char *from)
{
  to += n;
  from += n;
  for (;;) {
    if (!n) { return; } *--to = *--from; --n;
    if (!n) { return; } *--to = *--from; --n;
    if (!n) { return; } *--to = *--from; --n;
    if (!n) { return; } *--to = *--from; --n;
  }
}

int byte_diff(register char *s,register unsigned int n,register char *t)
{
  for (;;) {
    if (!n) { return 0; } if (*s != *t) { break; } ++s; ++t; --n;
    if (!n) { return 0; } if (*s != *t) { break; } ++s; ++t; --n;
    if (!n) { return 0; } if (*s != *t) { break; } ++s; ++t; --n;
    if (!n) { return 0; } if (*s != *t) { break; } ++s; ++t; --n;
  }
  return ((int)(unsigned int)(unsigned char) *s)
       - ((int)(unsigned int)(unsigned char) *t);
}

unsigned int byte_rchr(char *s,register unsigned int n,int c)
{
  register char ch;
  register char *t;
  register char *u;

  ch = c;
  t = s;
  u = 0;
  for (;;) {
    if (!n) { break; } if (*t == ch) { u = t; } ++t; --n; 
    if (!n) { break; } if (*t == ch) { u = t; } ++t; --n; 
    if (!n) { break; } if (*t == ch) { u = t; } ++t; --n;
    if (!n) { break; } if (*t == ch) { u = t; } ++t; --n;
  }
  if (!u) { u = t; }
  return u - s;
}

void byte_zero(char *s,register unsigned int n)
{
  for (;;) {
    if (!n) { break; } *s++ = 0; --n;
    if (!n) { break; } *s++ = 0; --n;
    if (!n) { break; } *s++ = 0; --n;
    if (!n) { break; } *s++ = 0; --n;
  }
}

void byte_fill(char *s,register unsigned int n,const int c)
{
  register char ch;
  
  ch = c;
  for (;;) {
    if (!n) { break; } *s++ = ch; --n;
    if (!n) { break; } *s++ = ch; --n;
    if (!n) { break; } *s++ = ch; --n;
    if (!n) { break; } *s++ = ch; --n;
  }
}