static BOOL pipe_Init(void) { if(!target) { _mm_errno=MMERR_OPENING_FILE; return 1; } #if !defined unix && (!defined __APPLE__ || !defined __MACH__) #ifdef __EMX__ _fsetmode(stdout, "b"); #endif #ifdef __WATCOMC__ pipefile = _popen(target, "wb"); #else pipefile = popen(target, "wb"); #endif if (!pipefile) { _mm_errno=MMERR_OPENING_FILE; return 1; } #else /* poor man's popen() */ if (pipe(pipefd)) { _mm_errno = MMERR_OPENING_FILE; return 1; } switch (pid=fork()) { case -1: close(pipefd[0]); close(pipefd[1]); pipefd[0]=pipefd[1]=-1; _mm_errno=MMERR_OPENING_FILE; return 1; case 0: if (pipefd[0]) { dup2(pipefd[0],0); close(pipefd[0]); } close(pipefd[1]); if (!MD_DropPrivileges()) execl("/bin/sh","sh","-c",target,NULL); exit(127); } close(pipefd[0]); if (!(pipefile=fdopen(pipefd[1],"wb"))) { _mm_errno=MMERR_OPENING_FILE; return 1; } #endif if(!(pipeout=_mm_new_file_writer(pipefile))) return 1; if(!(audiobuffer=(SBYTE*)MikMod_malloc(BUFFERSIZE))) return 1; md_mode|=DMODE_SOFT_MUSIC|DMODE_SOFT_SNDFX; return VC_Init(); }
static int WAV_Init(void) { #if (MIKMOD_UNIX) if (!MD_Access(filename?filename:FILENAME)) { _mm_errno=MMERR_OPENING_FILE; return 1; } #endif if(!(wavfile=fopen(filename?filename:FILENAME,"wb"))) { _mm_errno=MMERR_OPENING_FILE; return 1; } if(!(wavout=_mm_new_file_writer (wavfile))) { fclose(wavfile);unlink(filename?filename:FILENAME); wavfile=NULL; return 1; } if(!(audiobuffer=(SBYTE*)MikMod_malloc(BUFFERSIZE))) { _mm_delete_file_writer(wavout); fclose(wavfile);unlink(filename?filename:FILENAME); wavfile=NULL;wavout=NULL; return 1; } md_mode|=DMODE_SOFT_MUSIC|DMODE_SOFT_SNDFX; if (VC_Init()) { _mm_delete_file_writer(wavout); fclose(wavfile);unlink(filename?filename:FILENAME); wavfile=NULL;wavout=NULL; return 1; } dumpsize=0; putheader(); return 0; }