library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


OpenVMS

OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (下巻)


前へ 次へ 目次 索引


off_tデータ型は 32 ビット整数または 64 ビット整数です。 64 ビット・インタフェースでは 2 GB 以上のファイル・サイズを扱うことができ,次のように,コンパイル時に _LARGEFILE 機能テスト・マクロを定義することで選択することができます。


CC/DEFINE=_LARGEFILE 

OpenVMS バージョン 7.0 の段階では,時刻は Epoch (00:00:00 GMT,1970 年 1 月 1 日) 後の経過秒数で指定されます。

st_mode構造体のメンバは, <stat.h>ヘッダ・ファイルに定義されているステータス情報モードです。以下に st_modeのビットを示します。

ビット 定数 定義
0170000 S_IFMT ファイルのタイプ
0040000 S_IFDIR ディレクトリ
0020000 S_IFCHR キャラクタ・スペシャル
0060000 S_IFBLK ブロック・スペシャル
0100000 S_IFREG 通常
0030000 S_IFMPC 多重化キャラクタ・スペシャル
0070000 S_IFMPB 多重化ブロック・スペシャル
0004000 S_ISUID 実行時にユーザ ID を設定
0002000 S_ISGID 実行時にグループ ID を設定
0001000 S_ISVTX 使用後もスワップされたテキストを保存
0000400 S_IREAD 読み込み許可,オーナ
0000200 S_IWRITE 書き込み許可,オーナ
0000100 S_IEXEC 実行/検索許可,オーナ

stat関数は,リモート・ネットワーク・ファイルには使用できません。

ファイルがレコード・ファイルである場合, st_sizeフィールドにはキャリッジ・コントロール情報が含まれます。このため, st_size値は,ファイルから読み込める文字数には対応しません。

また, st_sizeが正しい値を報告するように, C RTL と RMS の両方のバッファをフラッシュする必要があります。

標準準拠の stat 構造体

OpenVMS Version 8.2 では,UNIX との互換性を向上させるため,機能テスト・マクロ _USE_STD_STAT と標準準拠の stat構造体が導入されました。

_USE_STD_STAT に ENABLE を定義すると,以下の動作となります。

注意 (Alpha, I64)

OpenVMS Alpha システムと I64 システムでは, statfstatutime,および utimes関数は,新しいファイル・システムの POSIX 準拠のファイル・タイムスタンプ・サポートに対応して拡張されています。

このサポートは,バージョン 7.3 およびそれ以降の OpenVMS Alpha システム上の ODS-5 デバイスでのみ使用できます。

この変更が行われる以前, statおよび fstat関数は,以下のファイル属性に基づいて st_ctimest_mtime,および st_atimeフィールドの値を設定していました。

st_ctime- ATR$C_CREDATE (ファイル作成時刻)
st_mtime- ATR$C_REVDATE (ファイル更新時刻)
st_atime- ファイル・アクセス時刻がサポートされていなかったため,常に st_mtime に設定されていた

また,ファイル変更時刻については, utimeおよび utimesは ATR$C_REVDATE ファイル属性を変更し,ファイル・アクセス時刻引数は無視していました。

変更が行われて以降,ODS-5 デバイス上のファイルに関しては, statおよび fstat関数は,以下の新しいファイル属性に基づいて st_ctimest_mtime,および st_atimeフィールドの値を設定するようになりました。

st_ctime- ATR$C_ATTDATE (最終属性変更時刻)
st_mtime- ATR$C_MODDATE (最終データ変更時刻)
st_atime- ATR$C_ACCDATE (最終アクセス時刻)

ODS-2 デバイスのように ATR$C_ACCDATE がゼロである場合, statおよび fstat関数は st_atimest_mtimeに設定します。

ファイル変更時刻については, utimeおよび utimes関数は, ATR$C_REVDATE と ATR$C_MODDATE の両方のファイル属性を変更します。ファイル・アクセス時刻については,これらの関数は ATR$C_ACCDATE ファイル属性を変更します。 ODS-2 デバイス上で ATR$C_MODDATE および ATR$C_ACCDATE ファイル属性を設定しても効果はありません。

互換性を保つために,デバイスの種類にかかわらず, statfstatutime,および utimesの以前の動作がデフォルトとなっています。

新しい動作を有効にするためには,アプリケーションを呼び出す前に, DECC$EFS_FILE_TIMESTAMPS 論理名に明示的に ENABLE を定義する必要があります。この論理名を設定しても, ODS-2 デバイス上のファイルに対する statfstatutime,および utimesの動作には影響はありません。


戻り値

0 成功を示します。
- 1 特権違反以外のエラーを示します。 errno はエラーを示す値に設定されます。
- 2 特権違反を示します。


statvfs (Alpha, I64)

指定されたファイルが格納されているデバイスに関する情報を取得します。

形式

#include <statvfs.h>

int statvfs (const char *restrict path, struct statvfs *restrict buffer);


引数

path

マウントされているデバイス上の任意のファイル。

buffer

返される情報を保持する, statvfs構造体へのポインタ

説明

statvfs関数は,指定されたファイルが格納されているデバイスに関する情報を返します。指定されたファイルに対する読み込み,書き込み,実行の許可は必要ありません。情報は, statvfs構造体の形で返されます。この構造体はヘッダ・ファイル <statvfs.h>で定義されており,以下のメンバが含まれています。
unsigned long f_bsize- 優先ブロック・サイズ。

unsigned long f_frsize- 基本ブロック・サイズ。

fsblkcnt_t f_blocks- ブロック・サイズの合計。単位は f_frsize

fsblkcnt_t f_bfree- 空きブロックサイズの合計。 DFS ディスクに対する $GETDVI で,無意味な空きブロック数が誤ってレポートされる場合, f_bfreeには最大ブロック数が設定されます。

fsblkcnt_t f_bavail- 利用可能な空きブロックの数。呼び出し元のディスク・クォータの未使用分が設定されます。

fsfilcnt_t f_files- ファイル・シリアル番号 (たとえば inode) の合計。

fsfilcnt_t f_ffree- 空きファイル・シリアル番号の合計。 OpenVMS システムでは,この値は「空きブロック数/クラスタサイズ」で計算されます。

fsfilcnt_t f_favail- 非特権プロセスが利用できるファイル・シリアル番号の数 (OpenVMS システムでは 0)。

unsigned long f_fsid- ファイル・システム ID。この ID は,割り当てクラス・デバイス名に基づきます。デバイスがローカルにマウントされている限り,デバイスに基づいた一意の値が提供されます。

unsigned long f_flag- 以下の 1 つ以上のフラグを表すビット・マスク。
ST_RONLY- ボリュームは読み込み専用。
ST_NOSUID- ボリュームで保護されたサブシステムが有効。


unsigned long f_namemax- ファイル名の最大長。
char f_basetype[64]- デバイス・タイプ名。
char f_fstr[64]- 論理ボリューム名。
char __reserved[64]- メディア・タイプ名。

正常に完了すると, statvfsは 0 (ゼロ) を返します。失敗すると - 1 を返し, errnoにエラーを示す値を設定します。

fstatvfsも参照してください。


戻り値

0 正常終了。
- 1 エラーを示します。 errno には,以下のいずれかが設定されます。

  • EACCES - パス接頭辞のコンポーネントに対する検索許可が拒否されました。

  • EIO - デバイスの読み込み中に入出力エラーが発生しました。

  • EINTR - 関数の実行中にシグナルを受信しました。

  • EOVERFLOW - 返却する値の 1 つが, buffer が示す構造体で正しく表現できません。

  • ENAMETOOLONG - パス・パラメータのコンポーネントの長さが NAME_MAX を超えたか,パス・パラメータの長さが PATH_MAX を超えました。

  • ENOENT - path のコンポーネントが,存在するファイルを示していないか, path が空文字列です。

  • ENOTDIR - path パラメータのパス接頭辞のコンポーネントが,ディレクトリではありません。


strcasecmp

2 つの 7 ビット ASCII 文字列の,大文字小文字を区別しない比較を行います。

形式

#include <strings.h>

int strcasecmp (const char *s1, const char *s2);


引数

s1

比較する 2 つの文字列のうちの第 1 のもの

s2

比較する 2 つの文字列のうちの第 2 のもの

説明

strcasecmp関数は大文字小文字を区別しません。返される字句的な違いは,小文字に変換されています。

strcasecmp関数は 7 ビット ASCII の比較のみを行います。国際化されたアプリケーションでは,この関数は使用しないようにしてください。


戻り値

n s1 文字列が s2 文字列よりも大きい,等しい,または小さい場合に,それぞれ 0 よりも大きい,等しい,または小さい整数値。


strcat

str_1 の末尾に,終端の null 文字を含めて str_2 を連結します。

形式

#include <string.h>

char *strcat (char *str_1, const char *str_2);

関数バリアント strcat関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strcat32_strcat64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。

引数

str_1, str_2

null で終了する文字列へのポインタ。

説明

strncatを参照してください。

戻り値

x 第 1 引数 str_1 のアドレス。これは連結された結果を保持できるだけの大きさを持つと仮定されます。



#include <string.h> 
#include <stdio.h> 
 
/* This program concatenates two strings using the strcat       */ 
/* function, and then manually compares the result of strcat    */ 
/* to the expected result.                                      */ 
 
#define S1LENGTH 10 
#define S2LENGTH 8 
 
main() 
{ 
    static char s1buf[S1LENGTH + S2LENGTH] = "abcmnexyz"; 
    static char s2buf[] = " orthis"; 
    static char test1[] = "abcmnexyz orthis"; 
 
    int i; 
    char *status; 
 
    /* Take static buffer s1buf, concatenate static buffer      */ 
    /* s2buf to it, and compare the answer in s1buf with the    */ 
    /* static answer in test1.                                  */ 
 
    status = strcat(s1buf, s2buf); 
    for (i = 0; i <= S1LENGTH + S2LENGTH - 2; i++) { 
        /* Check for correct returned string.   */ 
 
        if (test1[i] != s1buf[i]) 
            printf("error in strcat"); 
    } 
}                                         


前へ 次へ 目次 索引