| 1 | /* rexx - Get the extension of audio types added using | 
|---|
| 2 | the multimedia setup object. For example *.FLA. | 
|---|
| 3 | This script is called by M_MMAudio. | 
|---|
| 4 | */ | 
|---|
| 5 |  | 
|---|
| 6 | call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' | 
|---|
| 7 | call SysLoadFuncs | 
|---|
| 8 |  | 
|---|
| 9 | allExt="" | 
|---|
| 10 |  | 
|---|
| 11 | /* Get MMOS2 directory */ | 
|---|
| 12 | mmos2Dir=STRIP(TRANSLATE(value("MMBASE",,"OS2ENVIRONMENT")," ",";")) | 
|---|
| 13 | if LEFT(mmos2Dir,1)='\' THEN | 
|---|
| 14 | mmpm2Ini=mmos2Dir||'mmpm2.ini' | 
|---|
| 15 | else | 
|---|
| 16 | mmpm2Ini=mmos2Dir||'\mmpm2.ini' | 
|---|
| 17 |  | 
|---|
| 18 | if STREAM(mmpm2ini, "C", "Query exists")='' THEN DO | 
|---|
| 19 | /* MMPM2.INI not found */ | 
|---|
| 20 | rc="" | 
|---|
| 21 | exit "" | 
|---|
| 22 | END | 
|---|
| 23 |  | 
|---|
| 24 | /* Read ini */ | 
|---|
| 25 | a=0 | 
|---|
| 26 | DO WHILE LINES(mmpm2ini) | 
|---|
| 27 | a=a+1 | 
|---|
| 28 | mmini.a=STRIP(LINEIN(mmpm2ini)) | 
|---|
| 29 | END | 
|---|
| 30 | mmini.0=a | 
|---|
| 31 | ret=STREAM(mmpm2ini, "C", "close") | 
|---|
| 32 |  | 
|---|
| 33 | /* Find [DRIVERS] section */ | 
|---|
| 34 | DO a=1 to mmini.0 | 
|---|
| 35 | if ABBREV(TRANSLATE(mmini.a), "[DRIVERS]")=1 THEN DO | 
|---|
| 36 | call parseDrivers | 
|---|
| 37 | LEAVE | 
|---|
| 38 | END | 
|---|
| 39 | END | 
|---|
| 40 |  | 
|---|
| 41 | if waveaudio="" THEN DO | 
|---|
| 42 | rc="" | 
|---|
| 43 | exit "" | 
|---|
| 44 | END | 
|---|
| 45 | /*Now we have the wave device(s) */ | 
|---|
| 46 |  | 
|---|
| 47 | /* Get extensions from all devices */ | 
|---|
| 48 | tempext="" | 
|---|
| 49 | DO b=1 to WORDS(waveaudio) | 
|---|
| 50 | /* We may have several waveaudio devices */ | 
|---|
| 51 | tempExt=tempExt||' '||parseWaveDevice(WORD(waveaudio, b)) | 
|---|
| 52 | END | 
|---|
| 53 |  | 
|---|
| 54 | /* Build string and remove known extensions */ | 
|---|
| 55 | DO b=1 to WORDS(tempExt) | 
|---|
| 56 | curExt=WORD(tempExt,b) | 
|---|
| 57 | SELECT | 
|---|
| 58 | WHEN TRANSLATE(curExt)="MP3" THEN NOP /* Already supported by a spezialized class */ | 
|---|
| 59 | WHEN TRANSLATE(curExt)="OGG" THEN NOP | 
|---|
| 60 | WHEN TRANSLATE(curExt)="FLA" THEN NOP | 
|---|
| 61 | WHEN TRANSLATE(curExt)="FLAC" THEN NOP | 
|---|
| 62 |  | 
|---|
| 63 | OTHERWISE | 
|---|
| 64 | if allExt\='' THEN allExt=allExt||',' | 
|---|
| 65 | allExt=allExt||'*.'||STRIP(curExt) | 
|---|
| 66 | END | 
|---|
| 67 | END | 
|---|
| 68 | return allExt | 
|---|
| 69 | EXIT | 
|---|
| 70 |  | 
|---|
| 71 | /**************************************/ | 
|---|
| 72 |  | 
|---|
| 73 | parseDrivers: | 
|---|
| 74 | a=a+1 | 
|---|
| 75 | DO WHILE LEFT(mmini.a,1)\='[' | 
|---|
| 76 | IF ABBREV(TRANSLATE(mmini.a),"WAVEAUDIO")=1 THEN DO | 
|---|
| 77 | thePos=POS("=",mmini.a) | 
|---|
| 78 | if thePos=0 then return | 
|---|
| 79 | waveaudio=TRANSLATE(RIGHT(mmini.a, LENGTH(mmini.a)-thePos)," ",",") | 
|---|
| 80 | return | 
|---|
| 81 | END | 
|---|
| 82 | a=a+1 | 
|---|
| 83 | END | 
|---|
| 84 | return | 
|---|
| 85 |  | 
|---|
| 86 | parseWavedevice: | 
|---|
| 87 |  | 
|---|
| 88 | theDevice='['ARG(1)']' | 
|---|
| 89 | DO a=1 to mmini.0 | 
|---|
| 90 | if ABBREV(TRANSLATE(mmini.a), TRANSLATE(theDevice))=1 THEN DO | 
|---|
| 91 | /* Device section found */ | 
|---|
| 92 | a=a+1 | 
|---|
| 93 | DO WHILE LEFT(mmini.a,1)\='[' | 
|---|
| 94 | IF ABBREV(TRANSLATE(mmini.a),"EXTNAMES")=1 THEN DO | 
|---|
| 95 | thePos=POS("=",mmini.a) | 
|---|
| 96 | if thePos=0 then return | 
|---|
| 97 | ext=SUBWORD(TRANSLATE(RIGHT(mmini.a, LENGTH(mmini.a)-thePos)," ",","),2) | 
|---|
| 98 | return ext | 
|---|
| 99 | END | 
|---|
| 100 | a=a+1 | 
|---|
| 101 | END | 
|---|
| 102 | END | 
|---|
| 103 | END | 
|---|
| 104 | return "" | 
|---|
| 105 |  | 
|---|