strdecr.c 862 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*====================================================================*
  2. *
  3. * signed strdecr (void * memory, size_t extent, byte min, byte max);
  4. *
  5. * memory.h
  6. *
  7. * decrement a multi-byte memory region; start at max and reset at
  8. * min; return -1 if all bytes are min;
  9. *
  10. * Motley Tools by Charles Maier;
  11. * Copyright (c) 2001-2006 by Charles Maier Associates;
  12. * Licensed under the Internet Software Consortium License;
  13. *
  14. *--------------------------------------------------------------------*/
  15. #ifndef STRDECR_SOURCE
  16. #define STRDECR_SOURCE
  17. #include "../tools/memory.h"
  18. signed strdecr (void * memory, register size_t extent, register byte min, register byte max)
  19. {
  20. register byte * offset = (byte *)(memory);
  21. while (extent--)
  22. {
  23. if (-- offset [extent] >= min)
  24. {
  25. return (0);
  26. }
  27. offset [extent] = max;
  28. }
  29. return (-1);
  30. }
  31. #endif