예제 #1
0
파일: flock.c 프로젝트: 0x00evil/ruby
int
flock(int fd, int operation)
{
    switch (operation) {

	/* LOCK_SH - get a shared lock */
      case LOCK_SH:
        rb_notimplement();
        return -1;
	/* LOCK_EX - get an exclusive lock */
      case LOCK_EX:
	return lockf (fd, F_LOCK, 0);

	/* LOCK_SH|LOCK_NB - get a non-blocking shared lock */
      case LOCK_SH|LOCK_NB:
        rb_notimplement();
        return -1;
	/* LOCK_EX|LOCK_NB - get a non-blocking exclusive lock */
      case LOCK_EX|LOCK_NB:
	return lockf (fd, F_TLOCK, 0);

	/* LOCK_UN - unlock */
      case LOCK_UN:
	return lockf (fd, F_ULOCK, 0);

	/* Default - can't decipher operation */
      default:
	errno = EINVAL;
        return -1;
    }
}
예제 #2
0
VALUE
rb_f_notimplement(int argc, const VALUE *argv, VALUE obj)
{
    rb_notimplement();

    UNREACHABLE;
}
예제 #3
0
static VALUE
rb_gimp_hsl_to_rgb (VALUE self,
                    VALUE hsl)
{
  /*TODO*/
  rb_notimplement();
  return Qnil;
}
예제 #4
0
static VALUE
rb_gimp_rgb_to_hsl (VALUE self,
                    VALUE rgb)
{
  /*TODO*/
  rb_notimplement();
  return Qnil;
}
예제 #5
0
static VALUE ossl_ec_key_to_string(VALUE self, int format)
{
    EC_KEY *ec;
    BIO *out;
    int i = -1;
    int private = 0;
#if 0  /* unused now */
    EVP_CIPHER *cipher = NULL;
    char *password = NULL;
#endif
    VALUE str;

    Require_EC_KEY(self, ec);

    if (EC_KEY_get0_public_key(ec) == NULL)
        rb_raise(eECError, "can't export - no public key set");

    if (EC_KEY_check_key(ec) != 1)
	ossl_raise(eECError, "can't export - EC_KEY_check_key failed");

    if (EC_KEY_get0_private_key(ec))
        private = 1;

    if (!(out = BIO_new(BIO_s_mem())))
        ossl_raise(eECError, "BIO_new(BIO_s_mem())");

    switch(format) {
    case EXPORT_PEM:
    	if (private) {
#if 0  /* unused now */
    	    if (cipher || password)
/* BUG: finish cipher/password key export */
    	        rb_notimplement();
            i = PEM_write_bio_ECPrivateKey(out, ec, cipher, NULL, 0, NULL, password);
#endif
            i = PEM_write_bio_ECPrivateKey(out, ec, NULL, NULL, 0, NULL, NULL);
    	} else {
#if 0  /* unused now */
    	    if (cipher || password)
                rb_raise(rb_eArgError, "encryption is not supported when exporting this key type");
#endif

            i = PEM_write_bio_EC_PUBKEY(out, ec);
        }

    	break;
    case EXPORT_DER:
        if (private) {
#if 0  /* unused now */
    	    if (cipher || password)
                rb_raise(rb_eArgError, "encryption is not supported when exporting this key type");
#endif

            i = i2d_ECPrivateKey_bio(out, ec);
        } else {
#if 0  /* unused now */
    	    if (cipher || password)
예제 #6
0
파일: lob.c 프로젝트: aq1018/ruby-oci8
static VALUE oci8_lob_get_chunk_size(VALUE self)
{
    if (have_OCILobGetChunkSize_nb) {
        oci8_lob_t *lob = DATA_PTR(self);
        oci8_svcctx_t *svcctx = oci8_get_svcctx(lob->svc);
        ub4 len;

        oci_lc(OCILobGetChunkSize_nb(svcctx, svcctx->base.hp.svc, oci8_errhp, lob->base.hp.lob, &len));
        return UINT2NUM(len);
    } else {
        rb_notimplement();
    }
}
예제 #7
0
/*
 *  call-seq:
 *     dir.pos => integer
 *     dir.tell => integer
 *
 *  Returns the current position in <em>dir</em>. See also
 *  <code>Dir#seek</code>.
 *
 *     d = Dir.new("testdir")
 *     d.tell   #=> 0
 *     d.read   #=> "."
 *     d.tell   #=> 12
 */
static VALUE
dir_tell(VALUE dir)
{
#ifdef HAVE_TELLDIR
    struct dir_data *dirp;
    long pos;

    GetDIR(dir, dirp);
    pos = telldir(dirp->dir);
    return rb_int2inum(pos);
#else
    rb_notimplement();
#endif
}
예제 #8
0
/*
 *  call-seq:
 *     dir.seek( integer ) => dir
 *
 *  Seeks to a particular location in <em>dir</em>. <i>integer</i>
 *  must be a value returned by <code>Dir#tell</code>.
 *
 *     d = Dir.new("testdir")   #=> #<Dir:0x401b3c40>
 *     d.read                   #=> "."
 *     i = d.tell               #=> 12
 *     d.read                   #=> ".."
 *     d.seek(i)                #=> #<Dir:0x401b3c40>
 *     d.read                   #=> ".."
 */
static VALUE
dir_seek(VALUE dir, VALUE pos)
{
    struct dir_data *dirp;
    off_t p = NUM2OFFT(pos);

    GetDIR(dir, dirp);
#ifdef HAVE_SEEKDIR
    seekdir(dirp->dir, p);
    return dir;
#else
    rb_notimplement();
#endif
}
예제 #9
0
/*
 *  call-seq:
 *     Dir.chroot( string ) => 0
 *
 *  Changes this process's idea of the file system root. Only a
 *  privileged process may make this call. Not available on all
 *  platforms. On Unix systems, see <code>chroot(2)</code> for more
 *  information.
 */
static VALUE
dir_s_chroot(VALUE dir, VALUE path)
{
#if defined(HAVE_CHROOT) && !defined(__CHECKER__)
    check_dirname(&path);

    if (chroot(RSTRING_PTR(path)) == -1)
	rb_sys_fail(RSTRING_PTR(path));

    return INT2FIX(0);
#else
    rb_notimplement();
    return Qnil;		/* not reached */
#endif
}
static VALUE
ossl_cipher_set_padding(VALUE self, VALUE padding)
{
#if defined(HAVE_EVP_CIPHER_CTX_SET_PADDING)
    EVP_CIPHER_CTX *ctx;
    int pad = NUM2INT(padding);

    GetCipher(self, ctx);
    if (EVP_CIPHER_CTX_set_padding(ctx, pad) != 1)
	ossl_raise(eCipherError, NULL);
#else
    rb_notimplement();
#endif
    return padding;
}
static VALUE
ossl_s_ciphers(VALUE self)
{
#ifdef HAVE_OBJ_NAME_DO_ALL_SORTED
    VALUE ary;

    ary = rb_ary_new();
    OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
                    (void(*)(const OBJ_NAME*,void*))add_cipher_name_to_ary,
                    (void*)ary);

    return ary;
#else
    rb_notimplement();
#endif
}
예제 #12
0
파일: ossl_pkcs7.c 프로젝트: Ismaibz/maglev
/*
 * call-seq:
 *    PKCS7.encrypt(certs, data, [, cipher [, flags]]) => pkcs7
 */
static VALUE
ossl_pkcs7_s_encrypt(int argc, VALUE *argv, VALUE klass)
{
    VALUE certs, data, cipher, flags;
    STACK_OF(X509) *x509s;
    BIO *in;
    const EVP_CIPHER *ciph;
    int flg, status = 0;
    VALUE ret;
    PKCS7 *p7;

    rb_scan_args(argc, argv, "22", &certs, &data, &cipher, &flags);
    if(NIL_P(cipher)){
#if !defined(OPENSSL_NO_RC2)
	ciph = EVP_rc2_40_cbc();
#elif !defined(OPENSSL_NO_DES)
	ciph = EVP_des_ede3_cbc();
#elif !defined(OPENSSL_NO_RC2)
	ciph = EVP_rc2_40_cbc();
#elif !defined(OPENSSL_NO_AES)
	ciph = EVP_EVP_aes_128_cbc();
#else
	ossl_raise(ePKCS7Error, "Must specify cipher");
#endif

    }
    else ciph = GetCipherPtr(cipher); /* NO NEED TO DUP */
    flg = NIL_P(flags) ? 0 : NUM2INT(flags);
    in = ossl_obj2bio(data);
    x509s = ossl_protect_x509_ary2sk(certs, &status);
    if(status){
	BIO_free(in);
	/* rb_jump_tag(status); */
	rb_notimplement();
    }
    if(!(p7 = PKCS7_encrypt(x509s, in, (EVP_CIPHER*)ciph, flg))){
	BIO_free(in);
	sk_X509_pop_free(x509s, X509_free);
	ossl_raise(ePKCS7Error, NULL);
    }
    BIO_free(in);
    WrapPKCS7(cPKCS7, ret, p7);
    ossl_pkcs7_set_data(ret, data);
    sk_X509_pop_free(x509s, X509_free);

    return ret;
}
예제 #13
0
파일: kernel.c 프로젝트: dche/rcl
static VALUE
rcl_kernel_set_arg(VALUE self, VALUE index, VALUE type, VALUE value)
{
    EXTRACT_SIZE(index, idx);
    Check_Type(type, T_SYMBOL);

    size_t arg_size = 0;
    int8_t *arg_ptr = NULL;

    if (type == rcl_kernel_arg_type_memory) {
        if (!NIL_P(value)) {
            EXPECT_RCL_TYPE(value, Memory);
            arg_size = sizeof(cl_mem);

            rcl_mem_t *mem;
            Data_Get_Struct(value, rcl_mem_t, mem);
            arg_ptr = (void *)(&(mem->mem));
        }
    } else if (type == rcl_kernel_arg_type_local) {
        EXTRACT_SIZE(value, sz);
        arg_size = sz;
        arg_ptr = NULL;
    } else if (type == rcl_kernel_arg_type_struct) {
        // TODO: rb_call pointer
        //       rb_call address, size
        rb_notimplement();
    } else if (type == rcl_kernel_arg_type_sampler) {
        EXPECT_RCL_TYPE(value, Sampler);

        rcl_sampler_t *ps;
        Data_Get_Struct(value, rcl_sampler_t, ps);
        arg_ptr = (void *)(&(ps->s));

        arg_size = sizeof(cl_sampler);
    } else {
        arg_size = rcl_type_size(type);
        arg_ptr = ALLOCA_N(int8_t, arg_size);

        rcl_ruby2native(type, (void *)arg_ptr, value);
    }

    cl_int res = clSetKernelArg(KernelPtr(self), (cl_uint)idx, arg_size, arg_ptr);
    CHECK_AND_RAISE(res);

    return self;
}
예제 #14
0
/*
 * TermInfo.tiocgwinsz(io) => [row, col]
 *
 * TermInfo.tiocgwinsz returns the screen size of the terminal refered by io,
 * using TIOCGWINSZ ioctl.
 */
static VALUE
rt_tiocgwinsz(VALUE self, VALUE io)
{
#ifdef TIOCGWINSZ
  rb_io_t *fptr;
  struct winsize sz;
  int ret;

  GetOpenFile(io, fptr);

  ret = ioctl(FILENO(fptr), TIOCGWINSZ, &sz);
  if (ret == -1) rb_raise(rb_eIOError, "TIOCGWINSZ failed");

  return rb_ary_new3(2, INT2NUM(sz.ws_row), INT2NUM(sz.ws_col));
#else
  rb_notimplement();
#endif
}
예제 #15
0
파일: ossl_pkcs7.c 프로젝트: Ismaibz/maglev
static VALUE
ossl_pkcs7_verify(int argc, VALUE *argv, VALUE self)
{
    VALUE certs, store, indata, flags;
    STACK_OF(X509) *x509s;
    X509_STORE *x509st;
    int flg, ok, status = 0;
    BIO *in, *out;
    PKCS7 *p7;
    VALUE data;
    const char *msg;

    rb_scan_args(argc, argv, "22", &certs, &store, &indata, &flags);
    flg = NIL_P(flags) ? 0 : NUM2INT(flags);
    if(NIL_P(indata)) indata = ossl_pkcs7_get_data(self);
    in = NIL_P(indata) ? NULL : ossl_obj2bio(indata);
    if(NIL_P(certs)) x509s = NULL;
    else{
	x509s = ossl_protect_x509_ary2sk(certs, &status);
	if(status){
	    BIO_free(in);
	    /* rb_jump_tag(status); */
	    rb_notimplement();
	}
    }
    x509st = GetX509StorePtr(store);
    GetPKCS7(self, p7);
    if(!(out = BIO_new(BIO_s_mem()))){
	BIO_free(in);
	sk_X509_pop_free(x509s, X509_free);
	ossl_raise(ePKCS7Error, NULL);
    }
    ok = PKCS7_verify(p7, x509s, x509st, in, out, flg);
    BIO_free(in);
    if (ok < 0) ossl_raise(ePKCS7Error, NULL);
    msg = ERR_reason_error_string(ERR_get_error());
    ossl_pkcs7_set_err_string(self, msg ? rb_str_new2(msg) : Qnil);
    ERR_clear_error();
    data = ossl_membio2str(out);
    ossl_pkcs7_set_data(self, data);
    sk_X509_pop_free(x509s, X509_free);

    return (ok == 1) ? Qtrue : Qfalse;
}
예제 #16
0
파일: rudl_events.c 프로젝트: matozoid/rudl
/**
@method peek( eventmask )
Not implemented.
*/
static VALUE eventqueue_peek(int argc, VALUE* argv, VALUE self)
{
    SDL_Event event;
    int mask = 0;

    if(argc==0){
        mask = SDL_ALLEVENTS;
    }else{
        rb_notimplement();
    }

    SDL_PumpEvents();

    if(SDL_PeepEvents(&event, 1, SDL_PEEKEVENT, mask)==1){
        return sDLEvent2RubyEvent(&event);
    }else{
        return Qfalse;
    }
}
예제 #17
0
파일: rudl_events.c 프로젝트: matozoid/rudl
/**
@method get( eventmask ) -> [ Event, ... ]
Not implemented.
*/
static VALUE eventqueue_get(int argc, VALUE* argv, VALUE self)
{
    SDL_Event event;
    int mask = 0;
    VALUE retval;

    if(argc==0){
        mask = SDL_ALLEVENTS;
    }else{
        rb_notimplement();
    }

    retval=rb_ary_new();

    SDL_PumpEvents();

    while(SDL_PeepEvents(&event, 1, SDL_GETEVENT, mask)==1){
        rb_ary_push(retval, sDLEvent2RubyEvent(&event));
    }
    return retval;
}
예제 #18
0
/*
 * TermInfo.tiocswinsz(io, row, col)
 *
 * TermInfo.tiocgwinsz update the screen size information of the terminal refered by io,
 * using TIOCSWINSZ ioctl.
 *
 * It returns nil.
 */
static VALUE
rt_tiocswinsz(VALUE self, VALUE io, VALUE row, VALUE col)
{
#ifdef TIOCSWINSZ
  rb_io_t *fptr;
  struct winsize sz;
  int ret;

  GetOpenFile(io, fptr);

  sz.ws_row = NUM2INT(row);
  sz.ws_col = NUM2INT(col);

  ret = ioctl(FILENO(fptr), TIOCSWINSZ, &sz);
  if (ret == -1) rb_raise(rb_eIOError, "TIOCSWINSZ failed");

  return Qnil;
#else
  rb_notimplement();
#endif
}
예제 #19
0
static VALUE
ossl_engine_get_cipher(VALUE self, VALUE name)
{
#if defined(HAVE_ENGINE_GET_CIPHER)
    ENGINE *e;
    const EVP_CIPHER *ciph, *tmp;
    char *s;
    int nid;

    s = StringValuePtr(name);
    tmp = EVP_get_cipherbyname(s);
    if(!tmp) ossl_raise(eEngineError, "no such cipher `%s'", s);
    nid = EVP_CIPHER_nid(tmp);
    GetEngine(self, e);
    ciph = ENGINE_get_cipher(e, nid);
    if(!ciph) ossl_raise(eEngineError, NULL);

    return ossl_cipher_new(ciph);
#else
    rb_notimplement();
#endif
}
예제 #20
0
파일: ossl_pkcs7.c 프로젝트: Ismaibz/maglev
/*
 * call-seq:
 *    PKCS7.sign(cert, key, data, [, certs [, flags]]) => pkcs7
 */
static VALUE
ossl_pkcs7_s_sign(int argc, VALUE *argv, VALUE klass)
{
    VALUE cert, key, data, certs, flags;
    X509 *x509;
    EVP_PKEY *pkey;
    BIO *in;
    STACK_OF(X509) *x509s;
    int flg, status = 0;
    PKCS7 *pkcs7;
    VALUE ret;

    rb_scan_args(argc, argv, "32", &cert, &key, &data, &certs, &flags);
    x509 = GetX509CertPtr(cert); /* NO NEED TO DUP */
    pkey = GetPrivPKeyPtr(key); /* NO NEED TO DUP */
    flg = NIL_P(flags) ? 0 : NUM2INT(flags);
    in = ossl_obj2bio(data);
    if(NIL_P(certs)) x509s = NULL;
    else{
	x509s = ossl_protect_x509_ary2sk(certs, &status);
	if(status){
	    BIO_free(in);
	    /* rb_jump_tag(status); */
	    rb_notimplement();
	}
    }
    if(!(pkcs7 = PKCS7_sign(x509, pkey, x509s, in, flg))){
	BIO_free(in);
	sk_X509_pop_free(x509s, X509_free);
	ossl_raise(ePKCS7Error, NULL);
    }
    WrapPKCS7(cPKCS7, ret, pkcs7);
    ossl_pkcs7_set_data(ret, data);
    ossl_pkcs7_set_err_string(ret, Qnil);
    BIO_free(in);
    sk_X509_pop_free(x509s, X509_free);

    return ret;
}
예제 #21
0
static VALUE
ossl_engine_get_digest(VALUE self, VALUE name)
{
#if defined(HAVE_ENGINE_GET_DIGEST)
    ENGINE *e;
    const EVP_MD *md, *tmp;
    char *s;
    int nid;

    s = StringValuePtr(name);
    tmp = EVP_get_digestbyname(s);
    if(!tmp) ossl_raise(eEngineError, "no such digest `%s'", s);
    nid = EVP_MD_nid(tmp);
    GetEngine(self, e);
    md = ENGINE_get_digest(e, nid);
    if(!md) ossl_raise(eEngineError, NULL);

    return ossl_digest_new(md);
#else
    rb_notimplement();
#endif
}
예제 #22
0
VALUE
rb_ldap_conn_sasl_bind (int argc, VALUE argv[], VALUE self)
{
  rb_notimplement ();
}
예제 #23
0
파일: memory.c 프로젝트: dche/rcl
static VALUE
rcl_mem_gl_texture_info(VALUE self)
{
    rb_notimplement();
    return Qnil;
}
예제 #24
0
파일: memory.c 프로젝트: dche/rcl
static VALUE
rcl_mem_create_from_gl_render_buffer(VALUE self)
{
    rb_notimplement();
    return Qnil;
}
예제 #25
0
VALUE
rb_f_notimplement(int argc, VALUE *argv, VALUE obj)
{
    rb_notimplement();
}
예제 #26
0
파일: memory.c 프로젝트: dche/rcl
static VALUE
rcl_mem_create_from_gl_texture_3d(VALUE self)
{
    rb_notimplement();
    return Qnil;
}
예제 #27
0
파일: gc.c 프로젝트: prototype/MacRuby
static VALUE
gc_stress_get(VALUE self, SEL sel)
{
    rb_notimplement();
    return Qnil;
}
예제 #28
0
파일: gc.c 프로젝트: prototype/MacRuby
static VALUE
gc_stress_set(VALUE self, SEL sel, VALUE flag)
{
    rb_notimplement();
    return Qnil;
}
예제 #29
0
파일: rudl_events.c 프로젝트: matozoid/rudl
/**
@method blocked=( eventtype ) -> nil
Not implemented.
*/
static VALUE eventqueue_set_blocked(VALUE self, VALUE eventType)
{
    rb_notimplement();
    return Qnil;
}
예제 #30
0
파일: rudl_events.c 프로젝트: matozoid/rudl
/**
@method post( event ) -> nil
Not implemented.
*/
static VALUE eventqueue_post(VALUE self, VALUE event)
{
    rb_notimplement();
    return Qnil;
}