7: 2008-11-20 (木) 14:10:17 [6] | 8: 2008-11-20 (木) 19:56:33 [7] | ||
---|---|---|---|
Line 22: | Line 22: | ||
//*** ジャンクAPI すべて[3ffffff]のサブファンクション -- commented_out by K, 2008.11.19 | //*** ジャンクAPI すべて[3ffffff]のサブファンクション -- commented_out by K, 2008.11.19 | ||
-[000000] リザーブ。 | -[000000] リザーブ。 | ||
- | -[000001] void jg01_getcmdlin(int *len, int n, char *p) | + | -[000001] void jg01_getcmdlin(int n, char *p, int *len) |
--コマンドライン文字列取得。現状ではコマンドライン全体が無条件に見える。将来的には、この仕様は廃止され、コマンドライン全体を見る方法はなくなる。 | --コマンドライン文字列取得。現状ではコマンドライン全体が無条件に見える。将来的には、この仕様は廃止され、コマンドライン全体を見る方法はなくなる。 | ||
--仕様が廃止された後でも、このAPIを使ったアプリを救済するために、このコマンドラインで渡せる文字列を指定する方法が提供される(詳細は未定だが、例: >efg01 app.g01 jg01_cmdlin:"abc def ghi")。lenには実際の長さが入る。nが*lenよりも小さい場合、文字列はnまでしか格納されない。 | --仕様が廃止された後でも、このAPIを使ったアプリを救済するために、このコマンドラインで渡せる文字列を指定する方法が提供される(詳細は未定だが、例: >efg01 app.g01 jg01_cmdlin:"abc def ghi")。lenには実際の長さが入る。nが*lenよりも小さい場合、文字列はnまでしか格納されない。 | ||
- | -[000002] void jg01_fopen(int mode, int slot, char *path) | + | -[000002] void jg01_fclose(int slot) |
+ | --ファイルのクローズ。クローズはエラーにならない。というか、エラーの場合は何もしない。アプリの終了時にはオープンしたファイルは正しくクローズされるので、終了処理直前のクローズは省略してよい。 | ||
+ | --API番号の都合で逆になっているが、まずはfopenを読むこと。 | ||
+ | -[000003] void jg01_fopen(int mode, int slot, int pathlen, char *path) | ||
--ファイルのオープン。オープンに成功するか失敗するまで帰ってこない(OSASKのような非同期式ではない・・・手抜きなので)。失敗した場合、slotは無効状態になる。 | --ファイルのオープン。オープンに成功するか失敗するまで帰ってこない(OSASKのような非同期式ではない・・・手抜きなので)。失敗した場合、slotは無効状態になる。 | ||
--modeのbit0-2 : 0=タスクローカル, 1=ユーザ, 2=マシンローカル, 3=ネットワーク | --modeのbit0-2 : 0=タスクローカル, 1=ユーザ, 2=マシンローカル, 3=ネットワーク | ||
Line 36: | Line 39: | ||
---modeのbit5 : 1のとき、オープン後にファイルポインタを末尾に移動(bit4=0のとき) | ---modeのbit5 : 1のとき、オープン後にファイルポインタを末尾に移動(bit4=0のとき) | ||
---modeのbit5 : 1のとき、オープンに先立って同名のファイルがある場合にエラー(bit4=1のとき) | ---modeのbit5 : 1のとき、オープンに先立って同名のファイルがある場合にエラー(bit4=1のとき) | ||
- | --テキストモードなどというものはない。「ぐいぐい01」での標準的なテキストはCRが入らないものとするが、各アプリにおいてこれをあえて出力するオプションがあってもよい。そしてCRを無視することができない(=CRがあると誤動作する)テキストツールがあったとしても出来がよければ川合秀実推奨はでる。 | + | --テキストモードなどというものはない。「ぐいぐい01」での標準的なテキストはCRが入らないものとするが、各アプリにおいてこれをあえて出力するオプションがあってもよい。そしてCRを無視することができない(=CRがあると誤動作する)テキストツールがあったとしても出来がよければ[[K]]推奨はでる。 |
--slotは4~63が使用可能。 | --slotは4~63が使用可能。 | ||
- | -[000003] void jg01_fclose(int slot) | + | -[000004] void jg01_fread(int slot, int n, char *p, int *len) |
- | --ファイルのクローズ。クローズはエラーにならない。というか、エラーの場合は何もしない。アプリの終了時にはオープンしたファイルは正しくクローズされるので、終了処理直前のクローズは省略してよい。 | + | |
- | -[000004] void jg01_fread(int slot, int *len, int n, char *p) | + | |
--ファイルからの読み込み。*lenに読み込んだバイト数が返る。0が返るとEOF。-1だとエラー。 | --ファイルからの読み込み。*lenに読み込んだバイト数が返る。0が返るとEOF。-1だとエラー。 | ||
- | -[000004] void jg01_fwrite(int slot, int *len, int n, char *p) | + | -[000004] void jg01_fwrite(int slot, int n, char *p, int *len) |
--ファイルへの書き込み。サブファンクション番号がfreadと同じなのはミスではない(オプションコードで見分ける)。*lenに書き込めたバイト数が返る。-1だとエラー。 | --ファイルへの書き込み。サブファンクション番号がfreadと同じなのはミスではない(オプションコードで見分ける)。*lenに書き込めたバイト数が返る。-1だとエラー。 | ||
- | -[000005] void jg01_fseek32(int slot, int mode, int ofs, int *pos) | + | -[000005] void jg01_fseek32(int mode, int slot, int ofs, int *pos) |
--ファイルポインタの移動・取得・ファイルサイズ変更。API的には32bit制限があるわけではないが、C言語ライブラリ化にあたって32bitに限定した。 | --ファイルポインタの移動・取得・ファイルサイズ変更。API的には32bit制限があるわけではないが、C言語ライブラリ化にあたって32bitに限定した。 | ||
-[000006] void jg01_testslot0(int slot, char *p) | -[000006] void jg01_testslot0(int slot, char *p) | ||
Line 50: | Line 51: | ||
-[000007] リザーブ。 | -[000007] リザーブ。 | ||
-[000008] void jg01_malloc(int bytes, void **p) | -[000008] void jg01_malloc(int bytes, void **p) | ||
- | --システムからメモリをもらう。これはbss領域の中を切り分けてもらうなどではなく、それとは別に追加でもらうメモリである。失敗する可能性は十分にあり、失敗すると-1が返される。 | + | --システムからメモリをもらう。これはbss領域の中を切り分けてもらうなどではなく、それとは別に追加でもらうメモリである。失敗する可能性は十分にあり、失敗すると*pに-1が返される。 |
-[000009] void jg01_mfree(int bytes, void *p) | -[000009] void jg01_mfree(int bytes, void *p) | ||
--jg01_malloc()でもらったメモリを返す。部分的に返すこともできるし、bssの一部などもらってないメモリを返すこともできる。pが-1だと何もしない。アプリの終了時にはメモリは勝手に返されるので、終了処理中にmfreeする必要はない。 | --jg01_malloc()でもらったメモリを返す。部分的に返すこともできるし、bssの一部などもらってないメモリを返すこともできる。pが-1だと何もしない。アプリの終了時にはメモリは勝手に返されるので、終了処理中にmfreeする必要はない。 | ||
+ | --ちなみにefg01のひどい手抜き実装だと、mfreeが何もしないということもありうる(苦笑)。 |
(This host) = http://osask.net