#!/bin/sh
#2007 Lesser GPL licence v2 (http://www.fsf.org/licensing/licenses/lgpl.html)
#make the pup_save.2fs file bigger.
#v412 /etc/DISTRO_SPECS, renamed pup_xxx.sfs, pup_save.2fs etc.
#v555 pup files renamed to woofr555.sfs, woofsave.2fs.

#variables created at bootup by /initrd/usr/sbin/init...
. /etc/rc.d/PUPSTATE #v2.02
#PUPMODE=current operating configuration,
#PDEV1=the partition have booted off, DEV1FS=f.s. of PDEV1,
#PUPSFS=pup_201.sfs versioned name, stored on PDEV1, PUPSAVE=vfat,sda1,/pup_save.2fs
. /etc/DISTRO_SPECS #v412

#find out what modes use a pup_save.2fs file...
CANDOIT="no"
case $PUPMODE in
 "12") #pup_save.3fs (pup_rw), nothing on pup_ro1, pup_xxx.sfs (pup_ro2).
  PERSISTMNTPT="/initrd/pup_rw"
  CANDOIT="yes"
  ;;
 "13") #tmpfs (pup_rw), pup_save.3fs (pup_ro1), pup_xxx.sfs (pup_ro2).
  PERSISTMNTPT="/initrd/pup_ro1"
  CANDOIT="yes"
  ;;
esac

 if [ "$CANDOIT" != "yes" ];then
  gxmessage -center -bg "#ffc0c0" -title "個人用保存ファイルのサイズの変更：エラー" "パピーは現在個人用の持続性保存ファイルがありません。
今回始めてパピーを起動したのならば（例えばライブCDから）
全てのプログラムはRAM内にありセッションが終了する時
（パソコンをシャットダウンか再起動する時）、
個人用保存ファイルの作成をするかどうか聞かれます。
注意：ファイルは「pup_save.2fs」と名付けられ、
指定した場所に作成できます。パピーをハードディスクに
インストール、あるいは１つのパーティション全体に
個人用保存ファイルがインストールされていれば、
「pup_save.2fs」ファイルは作成されません。
「okay」ボタンを押して終了して下さい…"
  exit
 fi

[ ! "$PUPSAVE" ] && exit #precaution
[ ! "$PUP_HOME" ] && exit #precaution.

SAVEFS="`echo -n "$PUPSAVE" | cut -f 2 -d ','`"
SAVEPART="`echo -n "$PUPSAVE" | cut -f 1 -d ','`"
SAVEFILE="`echo -n "$PUPSAVE" | cut -f 3 -d ','`"
NAMEPFILE="`basename $SAVEFILE`"

HOMELOCATION="/initrd${PUP_HOME}${SAVEFILE}"
SIZEFREE=`df -m | grep "$PERSISTMNTPT" | tr -s " " | cut -f 4 -d " "` #free space in pup_save.3fs
ACTUALSIZK=`ls -sk $HOMELOCATION | tr -s " " | cut -f 1 -d " "` #total size of pup_save.3fs
if [ ! $ACTUALSIZK ];then
 ACTUALSIZK=`ls -sk $HOMELOCATION | tr -s " " | cut -f 2 -d " "`
fi
ACTUALSIZE=`expr $ACTUALSIZK \/ 1024`
APATTERN="/dev/${SAVEPART} "
PARTFREE=`df -m | grep "$APATTERN" | tr -s " " | cut -f 4 -d " "`

REPORTACTION="パピー個人用保存ファイルの変更ユーティリティへようこそ！"

MAINTEXT="個人ファイル名は $NAMEPFILE です。個人データ、設定ファイル 
メール、ニュースグループ・キャッシュ、ヒストリファイル、
インストールされたパッケージなどが含まれています。

全体のサイズは $ACTUALSIZE Mバイトで、$NAMEPFILE の中に　
$SIZEFREE Mバイトの空きスペースが残っています。

$NAMEPFILE ファイルは $SAVEPART パーティションに保存されています。
$SAVEPART に $PARTFREE Mバイトのスペースが残っています。

ここで決定する必要があります。$NAMEPFILE の空きスペースが
少なくなってきたらファイルのサイズを大きくする事ができます。
もちろん $SAVEPART に十分なスペースが無ければはなりません。
ご注意：英語掲示板には $NAMEPFILE のサイズを1.8GB以上大きく
してはいけないと言う報告がありますが確認はしてません。

==下のボタンをクリックしても何も起こりません==
==リサイズはパピーの再起動後、有効になります==

下のボタンを押すと $NAMEPFILE をその容量サイズに大きくします…
（注意：これは一方向でサイズを小さくできません）"

BUTTONS="+16M:15,+32M:14,+64M:10,+128M:11,+256M:12,+512M:13,EXIT:19"


gxmessage -center -bg "#c0ffff" -title "個人用保存ファイルのサイズ変更" -buttons "$BUTTONS" -file -<<MSG1
$REPORTACTION

$MAINTEXT
MSG1

REPLYX=$?

KILOBIG=
case ${REPLYX} in
   15)# 16M
    KILOBIG=16384
   ;;
   14)# 32M
    KILOBIG=32768
   ;;
   10)# 64M
    KILOBIG=65536
   ;;
   11)# 128M
    KILOBIG=131072
   ;;
   12)# 256M
    KILOBIG=262144
   ;;
   13)# 512M
    KILOBIG=524288
   ;;
   *)
    exit
   ;;
esac

echo -n "$KILOBIG" > /initrd${PUP_HOME}/pupsaveresize.txt

gxmessage -center -bg "orange" -title "個人用保存ファイルのサイズ変更" "オーケー、$NAMEPFILE を $KILOBIG Kバイト大きくする選択をしました。
このファイルは現在使用中なので、リサイズは再起動後有効になります。

テクニカルノート：
増加に必要なサイズは、現在 /mnt/home にマウントされている $SAVEPART
パーティションのpupsaveresize.txtと言うファイルに書き込まれます。
起動時にpupsaveresize.txtファイルが読み込まれリサイズが実行されます。
pupsaveresize.txtはその後削除されます。

警告: 複数のpup_saveファイルがある場合、再起動時に
同じファイルを選択するように気をつけて下さい。

パピーを続けて使用できます。変更は再起動後のみ有効になります。
「OK」をクリックして終了して下さい…"

###END###

#notes:
#  dd if=/dev/zero bs=1k count=$KILOBIG | tee -a $HOMELOCATION > /dev/null
