Reuse, not rework
Home

License Awareness



Highly Reusable Software

By activity
Professions, Sciences, Humanities, Business, ...

User Interface
Text-based, GUI, Audio, Video, Keyboards, Mouse, Images,...

Text Strings
Conversions, tests, processing, manipulation,...

Math
Integer, Floating point, Matrix, Statistics, Boolean, ...

Processing
Algorithms, Memory, Process control, Debugging, ...

Stored Data
Data storage, Integrity, Encryption, Compression, ...

Communications
Networks, protocols, Interprocess, Remote, Client Server, ...

Hard World
Timing, Calendar and Clock, Audio, Video, Printer, Controls...

File System
Management, Filtering, File & Directory access, Viewers, ...


NAME

librock_VSBWriteDisable - Mark a librock_VSB as read-only
librock_VSBWriteEnable - Ensure a librock_VSB is writable
librock_VSBSetXA - Use an externally allocated buffer
#License - #Source code - #Example Use -

SYNOPSIS

#include <librock/mstruct.h>

void
librock_VSBWriteDisable(
    struct librock_VSB_s *v
);

void *
librock_VSBWriteEnable(
    struct librock_VSB_s *v
);

void
librock_VSBSetXA(
    struct librock_VSB_s *v,
    const void *p,int len
);

DESCRIPTION

librock_VSBWriteDisable marks a librock_VSB as read-only. Future librock_VSB calls which attempt to modify the buffer will fail.

librock_VSBWriteEnable reallocates the librock_VSB buffer so that librock_VSB calls can modify the buffer contents. Returns non-zero if successful.

Use librock_VSBSetXA() to replace the buffer with one that is already externally allocated. It will be "WriteDisabled."

#ifdef librock_TYPICAL_USE_VSBSetXA
    #include <librock/mstruct.h>
    struct librock_VSB_s *v = librock_VSBalloc();

    librock_VSBSetXA(v,"External Allocation.",10);

    /* Error to call VSBAppend, VSBInsert, or even VSBsz

       when buffer is WriteDisabled.
    librock_VSBAppend(v,"is ",3);
    librock_VSBInsert(v,0,"this ",5);
    printf("%s\n",librock_VSBsz(v));
    */
    printf("%.*s\n",v->inbuf,v->buf);

    librock_VSBfree(v);
#endif

USES

   librock_assert() librock_VSBrealloc()

    free()     // #ifndef librock_fmalloc
    memcpy()   // #ifndef librock_memcpy
   //librock_VSBSetXA uses macros for memory operations
   //librock_memcpy and librock_ffree.  If not defined
   //at compile time, they are set to memcpy() and free()


LICENSE

  Copyright 1998-2002 Forrest J. Cavalier III, http://www.mibsoftware.com
  Licensed under BSD-ish license, NO WARRANTY. Copies must retain this block.
  License text in <librock/license/librock.txt> librock_LIDESC_HC=12440211096131f5976d36be0cddca4cd9152e45

Source Code

./exec/struct/vsb.c (implementation, plus source of this manual page)

Tests and Supported Platform Types

This is a representative sample. Librock code is highly portable. For a particular platform not reported here, request paid support

librock_VSBWriteDisable passed tests in tvsbop (Unix/Linux/BSD: 2002/08/08 sys=FreeBSD using gcc)
librock_VSBWriteDisable passed tests in tvsbop_main (WIN32: 2002/08/08 sys=NT 4.0 using MSVC)
librock_VSBWriteEnable passed tests in tvsbop (Unix/Linux/BSD: 2002/08/08 sys=FreeBSD using gcc)
librock_VSBWriteEnable passed tests in tvsbop_main (WIN32: 2002/08/08 sys=NT 4.0 using MSVC)


This software is part of Librock

Rapid reuse, without rework. Details
This page copyright (C) 2002-2003 Forrest J. Cavalier III, d-b-a Mib Software, Saylorsburg PA 18353, USA

Verbatim copying and distribution of this generated page is permitted in any medium provided that no changes are made.
(The source of this manual page may be covered by a more permissive license which allows modifications.)

Want to help? We welcome comments, patches. -- Need help? Request paid support.