filename | 開きたいファイル名。 The name of the file to open. |
openmode | 開くモード。以下のいずれかとする。 The mode to open, which must be one of the followings.
If the file already exists in case of the writing mode, the program informs it to the user, and consults the user if he/she allows the program to remove the old file and overwrite it by the new file. The modes with “-” skips this procedure and overwrites the existing file without consulting the user. Except for this behaviour, the meanings of this argument are identical to those of the 2nd argument of function fopen. Note that the modes with “+” are discouraged, as the behaviour of these modes have not been checked. |
条件 Condition |
動作 Behaviour of the function |
引数filenameの文字列長が0 The string length of the argument filename is 0 |
プログラムをエラー終了する。 The program finishes as an error. |
引数openmodeがいずれの候補とも一致しない The argument openmode is equal to none of the candidates |
プログラムをエラー終了する。 The program finishes as an error. |
引数openmodeが「r」から始まり(読み込みモード)、
引数filenameで指定されたファイルが存在しない The argument openmode begins with “r” (a reading mode) and the file specified by argument filename is absent |
プログラムをエラー終了する。 The program finishes as an error. |
引数filenameで指定されたファイルが存在し、通常のファイルではない
(関数stat, S_ISREGにより判定) The file specified by argument filename is present and not a regular file according to functions stat and S_ISREG |
プログラムをエラー終了する。 The program finishes as an error. |
引数filenameで指定されたファイルが存在し、
引数openmodeが「w」で始まり「-」以外で終わる
(上書き前チェック有りの書き込みモード) The file specified by argument filename is present, and the argument openmode begins with “w” and does not end with “-”; (a writing mode with checks before overwriting) |
ファイルを上書きして良いか否かをユーザに尋ねる。
ユーザの回答が「y」以外であればプログラムをエラー終了する。
ユーザの回答が「y」の場合は次の処理に進む。 Consult the user if he/she allows overwriting the existing file. If the answer was other than “y”, the program finishes as an error. If the answer was “y”, the program continues to the next procedure. |
引数filenameで指定されたファイルが存在せず、
そのディレクトリパスも存在しない The file specified by argument filename is absent and its directory path is also absent |
引数openmodeが「r」から始まる場合(読み込みモード)、
プログラムをエラー終了する。
引数openmodeが「-」で終わる場合(確認なし上書きモード)、
ディレクトリパスを作成する。
それ以外の場合はディレクトリパスを作成するか否かをユーザに訪ねる。
ディレクトリの作成後は次の処理に進む。 The program finishes as an error if the argument openmode begins with “r” (a reading mode). The program automatically creates the path directory if the argument openmode ends with “-’ (a writing mode without checks for overwriting). In the other cases, the program consults the user to allow creating a directory or not. After creating the directory, the program continues to the next procedure. |
ここまでのチェックでエラーが起きていない No error has occurred until this step |
ファイルをオープンし、排他ロックをかける。 Open the file and apply an exclusive lock. |
オープンした際の戻り値がNULL The opening of the file returned NULL |
プログラムをエラー終了する。 The program finishes as an error. |
引数openmodeの値 The value of argument openmode |
メンバmain Member main |
メンバkeep Member keep |
"r"または"rb" "r" or "rb" |
関数fopenを用いてファイルfilenameをモードopenmodeで開いた戻り値 The return value of function fopen for opening the file filename with the mode openmode |
ファイルの排他ロックのため、
関数myflock
を用いてファイルfilenameをモード"a"(追加書き込み)で
開いた戻り値 The return value of function myflock for opening the file filename with the mode "a" (an addition mode) |
その他 Other |
関数myflock
を用いてファイルfilenameをモードopenmode(但し末尾の「-」は除く)で
開いた戻り値 The return value of function myflock for opening the file filename with the mode openmode without “-” at the end |
NULL |