Mac Os X で、最近使用したファイルのデフォルト データベースを解析する必要があります。これは sed で行います。注意点は、ファイル名が分解された utf-16 に格納されていることです。
それで、(NSString関数を指摘された後)「それを処理する小さなツールを作ってみませんか」と思いました。
このツールは基本的に cat のように動作するはずです。入力から行を取得し、各行を CFStringref オブジェクトに変換します。CFStringrefが事前に構成された UTF-16 に変換される前に、それを UTF-8 に変換して出力します。
言いたくないのですが、この「無料のブリッジング」が機能するかどうかはわかりません。これに Cocoa と Objective C を使用するつもりはありません。CFStringref を使用した単純なソリューションが必要なだけです。存在します!
ありがとう!
これが私がこれまでに得たものです:
#define BUFFERSIZE 512
static void
precomposedOutput( char *fn )
{
char buffer[BUFFERSIZE] ;
CFStringRef str ;
char *outbuf;
char *bytes ;
FILE *fd = stdin ;
if (fn) {
fd = fopen(fn,"r");
}
while ( fgets(buffer, sizeof(buffer),fd ) ) {
bytes = savestr(buffer) ;
str = CFStringCreateWithCStringNoCopy(NULL, bytes,kCFStringEncodingUTF8, NULL);
/* CONVERSION INTO PRECOMPOSED IS SUPPOSED TO HAPPEN HERE */
outbuf = Copy_CFStringRefToCString(str) ;
CFRelease(str) ;
fputs(outbuf,stdout) ;
free(outbuf) ;
}
}
これは、これまでのところ、前後に変換する際に機能しているようです (リークは実行されません)。助けが必要なのは、CFString を事前に構成された UTF-16 に変換することです。
ありがとう!