Crypt-SecretBuffer

 view release on metacpan or  search on metacpan

SecretBuffer.xs  view on Meta::CPAN

bool
_can_count_copies_in_process_memory()
   CODE:
      RETVAL= false;
   OUTPUT:
      RETVAL
   
IV
_count_matches_in_mem(buf, addr0, addr1)
   secret_buffer *buf
   UV addr0
   UV addr1
   CODE:
      if (!buf->len)
         croak("Empty buffer");
      RETVAL= scan_mapped_memory_in_range(addr0, addr1, buf->data, buf->len);
      if (RETVAL < 0)
         croak("Unimplemented");
   OUTPUT:
      RETVAL

MODULE = Crypt::SecretBuffer           PACKAGE = Crypt::SecretBuffer::Exports

void
unmask_secrets_to(coderef, ...)
   SV *coderef
   INIT:
      int count= 0, i;
      secret_buffer *buf= NULL;
   PPCODE:
      PUSHMARK(SP);
      EXTEND(SP, items);
      for (i= 1; i < items; i++) {
         if (SvOK(ST(i)) && SvROK(ST(i)) && (buf= secret_buffer_from_magic(ST(i), 0)))
            PUSHs(secret_buffer_get_stringify_sv(buf));
         else
            PUSHs(ST(i));
      }
      PUTBACK;
      count= call_sv(coderef, GIMME_V);
      SPAGAIN;
      XSRETURN(count);

bool
_wait_fh_readable(handle, timeout_sv)
   PerlIO *handle
   SV *timeout_sv
   CODE:
      RETVAL= sb_wait_fh_readable(aTHX_ handle, timeout_sv);
   OUTPUT:
      RETVAL

void
_debug_charset(cset)
   secret_buffer_charset *cset
   INIT:
      HV *hv;
   PPCODE:
      PUSHs(sv_2mortal((SV*)newRV_noinc((SV*)(hv= newHV()))));
      hv_stores(hv, "bitmap", newSVpvn((char*)cset->bitmap, sizeof(cset->bitmap)));
      hv_stores(hv, "unicode_above_7F", newSViv(cset->unicode_above_7F));

MODULE = Crypt::SecretBuffer           PACKAGE = Crypt::SecretBuffer::AsyncResult

void
wait(result, timeout=-1)
   secret_buffer_async_result *result
   NV timeout
   INIT:
      IV os_err, bytes_written;
   PPCODE:
      if (secret_buffer_async_result_recv(result, (IV)(timeout*1000), &bytes_written, &os_err)) {
         EXTEND(sp, 2);
         ST(0)= sv_2mortal(newSViv(bytes_written));
         ST(1)= sv_2mortal(newSViv(os_err));
         XSRETURN(2);
      } else {
         XSRETURN(0);
      }

MODULE = Crypt::SecretBuffer           PACKAGE = Crypt::SecretBuffer::ConsoleState

void
new(pkg, ...)
   const char *pkg;
   ALIAS:
      maybe_new = 1
   INIT:
      sb_console_state cstate, *magic_cstate;
      PerlIO *handle= NULL;
      SV *auto_restore= NULL;
      SV *set_echo= NULL;
      SV *set_line_input= NULL;
      SV *objref;
      bool already_set= true;
      if (items == 2) {
         IO *io = sv_2io(ST(1));
         handle= io? IoIFP(io) : NULL;
      } else if (items > 2) {
         int i= 1;
         if ((items - 1) & 1)
            croak("expected even-length key/value attribute list");
         for (; i < items; i+= 2) {
            STRLEN len;
            const char *name= SvPV(ST(i), len);
            SV *val= ST(i+1);
            if (len == 4 && memcmp(name, "echo", 4) == 0) {
               if (SvOK(val)) set_echo= val;
            }
            else if (len == 6 && memcmp(name, "handle", 6) == 0) {
               IO *io = sv_2io(val);
               handle= io? IoIFP(io) : NULL;
            }
            else if (len == 10 && memcmp(name, "line_input", 10) == 0) {
               if (SvOK(val)) set_line_input= val;
            }
            else if (len == 12 && memcmp(name, "auto_restore", 12) == 0) {
               if (SvOK(val)) auto_restore= val;
            }
            else {
               croak("Unknown option '%s'", name);



( run in 1.364 second using v1.01-cache-2.11-cpan-e1769b4cff6 )