cygwinからのドライブレターの取得

無事cygwin(UTF-8 Cygwin)をUSBに入れることが出来ました。
また、前回の構成であらかたインストールしてみました。
そこで、cygwinからサクラエディタを起動したい!と思ったんですが、
usb直下のbinにはpathを通してるわけじゃないのでフルパスで起動を行わないといけないです。
その為、「起動されたcygwinから、そのドライブレターを取得したい」という需要がでました。

で、10分ほどググってもそれらしい情報に当たらなかったので、
書いた方が早いんじゃねーかと思って、ざっくりプログラミング。


drive.c:

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
	char buf[8] = {0};
	char* p = strchr(argv[0], '\\');
	strncpy(buf, argv[0], (int)(p - argv[0]));
	printf("%s", buf);
	return 0;
}

これをコンパイルして/usr/bin/local辺りにおいておけば、一応ドライブレターを取れる。
あとはshellスクリプト書いて、同じく/usr/bin/localに保存。


sakura:

#!/bin/sh

DRIVE=`drive.exe`
EDIR="$DRIVE/bin/sakura"

## 実行
if [ $# -eq 0 ]; then
	`$EDIR/sakura.exe` &
	exit
fi

`$EDIR/sakura.exe $1` &

これでusb内のサクラエディタを起動。
しかし、もうすこしスマートな方法はないかなあ。

(追記)

cygwinを起動するbatファイルで %~d0 を環境変数にsetしても良かったかもしれない。