bsdcontrol.rb/ext/hbsdctl.rb/feature.c

34 lines
755 B
C
Raw Normal View History

2024-03-07 22:04:44 +01:00
#include <libhbsdcontrol.h>
2024-03-09 23:40:42 +01:00
#include <errno.h>
2024-03-07 22:04:44 +01:00
#include "include/feature.h"
2024-03-08 02:08:48 +01:00
static VALUE __set(VALUE, VALUE, VALUE);
2024-03-07 22:04:44 +01:00
/**
* BSD::Control::Feature#set!
**/
VALUE
feature_set(VALUE self, VALUE rb_path, VALUE rb_state)
2024-03-07 22:04:44 +01:00
{
Check_Type(rb_path, T_STRING);
Check_Type(rb_state, T_FIXNUM);
2024-03-09 23:40:42 +01:00
VALUE rb_feature = rb_funcall(self, rb_intern("name"), 0);
Check_Type(rb_feature, T_STRING);
return (__set(rb_path, rb_feature, rb_state));
2024-03-07 22:04:44 +01:00
}
static VALUE
2024-03-08 02:08:48 +01:00
__set(VALUE rb_path, VALUE rb_feature, VALUE rb_state)
{
int result = hbsdcontrol_set_feature_state(
RSTRING_PTR(rb_path),
RSTRING_PTR(rb_feature),
NUM2INT(rb_state)
);
if (result == 0) {
return (Qtrue);
} else {
2024-03-09 23:40:42 +01:00
rb_syserr_fail(errno, "hbsdcontrol_set_feature_state");
2024-03-08 02:08:48 +01:00
}
}