Kaydet (Commit) 66bca326 authored tarafından Sjoerd Mullender's avatar Sjoerd Mullender

Port to Solaris 2.3.

üst 57531fea
...@@ -41,8 +41,6 @@ extern typeobject MD5type; /* Really static, forward */ ...@@ -41,8 +41,6 @@ extern typeobject MD5type; /* Really static, forward */
#define is_md5object(v) ((v)->ob_type == &MD5type) #define is_md5object(v) ((v)->ob_type == &MD5type)
static const char initialiser_name[] = "md5";
/* #define MD5_DEBUG */ /* #define MD5_DEBUG */
static md5object * static md5object *
...@@ -207,7 +205,7 @@ typeobject MD5type = { ...@@ -207,7 +205,7 @@ typeobject MD5type = {
/* List of functions exported by this module */ /* List of functions exported by this module */
static struct methodlist md5_functions[] = { static struct methodlist md5_functions[] = {
{initialiser_name, MD5_md5}, {"md5", MD5_md5},
{NULL, NULL} /* Sentinel */ {NULL, NULL} /* Sentinel */
}; };
......
...@@ -30,7 +30,11 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -30,7 +30,11 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <stropts.h> #include <stropts.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#ifdef SOLARIS
#include <multimedia/libaudio.h>
#else
#include <sun/audioio.h> #include <sun/audioio.h>
#endif
/* #define offsetof(str,mem) ((int)(((str *)0)->mem)) */ /* #define offsetof(str,mem) ((int)(((str *)0)->mem)) */
...@@ -50,7 +54,7 @@ typedef struct { ...@@ -50,7 +54,7 @@ typedef struct {
extern typeobject Sadtype; /* Really static, forward */ extern typeobject Sadtype; /* Really static, forward */
extern typeobject Sadstatustype; /* Really static, forward */ extern typeobject Sadstatustype; /* Really static, forward */
extern sadstatusobject *sads_alloc(); /* Forward */ static sadstatusobject *sads_alloc(); /* Forward */
static object *SunAudioError; static object *SunAudioError;
...@@ -256,6 +260,24 @@ sad_drain(self, args) ...@@ -256,6 +260,24 @@ sad_drain(self, args)
return None; return None;
} }
#ifdef SOLARIS
static object *
sad_getdev(self, args)
sadobject *self;
object *args;
{
struct audio_device ad;
if ( !getargs(args, "") )
return 0;
if ( ioctl(self->x_fd, AUDIO_GETDEV, &ad) < 0 ) {
err_errno(SunAudioError);
return NULL;
}
return mkvalue("(sss)", ad.name, ad.version, ad.config);
}
#endif
static object * static object *
sad_flush(self, args) sad_flush(self, args)
sadobject *self; sadobject *self;
...@@ -298,6 +320,9 @@ static struct methodlist sad_methods[] = { ...@@ -298,6 +320,9 @@ static struct methodlist sad_methods[] = {
{ "setinfo", sad_setinfo }, { "setinfo", sad_setinfo },
{ "drain", sad_drain }, { "drain", sad_drain },
{ "flush", sad_flush }, { "flush", sad_flush },
#ifdef SOLARIS
{ "getdev", sad_getdev },
#endif
{ "close", sad_close }, { "close", sad_close },
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };
...@@ -345,6 +370,11 @@ static struct memberlist sads_ml[] = { ...@@ -345,6 +370,11 @@ static struct memberlist sads_ml[] = {
{ "i_waiting", T_UBYTE, OFF(record.waiting) }, { "i_waiting", T_UBYTE, OFF(record.waiting) },
{ "i_open", T_UBYTE, OFF(record.open) , RO}, { "i_open", T_UBYTE, OFF(record.open) , RO},
{ "i_active", T_UBYTE, OFF(record.active) , RO}, { "i_active", T_UBYTE, OFF(record.active) , RO},
#ifdef SOLARIS
{ "i_buffer_size", T_UINT, OFF(record.buffer_size) },
{ "i_balance", T_UBYTE, OFF(record.balance) },
{ "i_avail_ports", T_UINT, OFF(record.avail_ports) },
#endif
{ "o_sample_rate", T_UINT, OFF(play.sample_rate) }, { "o_sample_rate", T_UINT, OFF(play.sample_rate) },
{ "o_channels", T_UINT, OFF(play.channels) }, { "o_channels", T_UINT, OFF(play.channels) },
...@@ -359,6 +389,11 @@ static struct memberlist sads_ml[] = { ...@@ -359,6 +389,11 @@ static struct memberlist sads_ml[] = {
{ "o_waiting", T_UBYTE, OFF(play.waiting) }, { "o_waiting", T_UBYTE, OFF(play.waiting) },
{ "o_open", T_UBYTE, OFF(play.open) , RO}, { "o_open", T_UBYTE, OFF(play.open) , RO},
{ "o_active", T_UBYTE, OFF(play.active) , RO}, { "o_active", T_UBYTE, OFF(play.active) , RO},
#ifdef SOLARIS
{ "o_buffer_size", T_UINT, OFF(play.buffer_size) },
{ "o_balance", T_UBYTE, OFF(play.balance) },
{ "o_avail_ports", T_UINT, OFF(play.avail_ports) },
#endif
{ "monitor_gain", T_UINT, OFF(monitor_gain) }, { "monitor_gain", T_UINT, OFF(monitor_gain) },
{ NULL, 0, 0}, { NULL, 0, 0},
...@@ -382,7 +417,7 @@ sads_setattr(xp, name, v) ...@@ -382,7 +417,7 @@ sads_setattr(xp, name, v)
if (v == NULL) { if (v == NULL) {
err_setstr(TypeError, err_setstr(TypeError,
"can't delete sun audio status attributes"); "can't delete sun audio status attributes");
return NULL; return 0;
} }
return setmember((char *)&xp->ai, sads_ml, name, v); return setmember((char *)&xp->ai, sads_ml, name, v);
} }
......
...@@ -195,7 +195,7 @@ t_bootstrap(args_raw) ...@@ -195,7 +195,7 @@ t_bootstrap(args_raw)
func = gettupleitem(args, 0); func = gettupleitem(args, 0);
arg = gettupleitem(args, 1); arg = gettupleitem(args, 1);
res = call_object(func, arg); res = call_object(func, arg);
DECREF(arg); /* Matches the INCREF(arg) in thread_start_new_thread */ DECREF(args); /* Matches the INCREF(args) in thread_start_new_thread */
if (res == NULL) { if (res == NULL) {
fprintf(stderr, "Unhandled exception in thread:\n"); fprintf(stderr, "Unhandled exception in thread:\n");
print_error(); /* From pythonmain.c */ print_error(); /* From pythonmain.c */
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment