11 March 2015

(Linux) gftpの日時フォーマットの変更

gftpの日時表記を変更する

20150311-gftp-before.jpg
デフォルトの日時フォーマット …… 年が表示されないため使いにくい

20150311-gftp-after.jpg
日時フォーマット変更後の例

ソースコードのダウンロードと編集箇所

まず、ソースコードをダウンロードする

$ apt-get source gftp

ソースコードを編集するのは1箇所のみ

gftp-2.0.19/src/gtk/gftp-gtk.c
void
add_file_listbox (gftp_window_data * wdata, gftp_file * fle)
{
  char *add_data[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
//  char *tempstr, *str, *pos, *attribs;
  char *tempstr, str[128], *pos, *attribs;
  gftp_config_list_vars * tmplistvar;
  gftp_file_extensions * tempext;
  GdkBitmap * bitmap;
  GList * templist;
  GdkPixmap * pix;
  int clist_num;
  size_t stlen;
 
  if (wdata->show_selected)
    {
      fle->shown = fle->was_sel;
 
 〜 中略 〜
 
  if (fle->user)
    gtk_clist_set_text (GTK_CLIST (wdata->listbox), clist_num, 3, fle->user);
  if (fle->group)
    gtk_clist_set_text (GTK_CLIST (wdata->listbox), clist_num, 4, fle->group);
//  if ((str = ctime (&fle->datetime)))
  if (strftime(str, sizeof(str), "%y/%d/%m %H:%M:%S", localtime(&fle->datetime)))
    {
      if ((pos = strchr (str, '\n')) != NULL)
        *pos = '\0';
      gtk_clist_set_text (GTK_CLIST (wdata->listbox), clist_num, 5, str);
    }
 
  attribs = gftp_convert_attributes_from_mode_t (fle->st_mode);
  gtk_clist_set_text (GTK_CLIST (wdata->listbox), clist_num, 6, attribs);
  g_free (attribs);
}

ソースコードのビルドとシステムへのコピー

まず、ソースコードをビルドし

$ ./configure --prefix=/usr
$ make

実行ファイルのみをシステムにコピーする

$ which gftp-gtk        ← 実行ファイルの場所を確認
/usr/bin/gftp-gtk
$ sudo mv /usr/bin/gftp-gtk /usr/bin/gftp-gtk.original
$ sudo chmod -x /usr/bin/gftp-gtk.original
$ sudo cp src/gtk/gftp-gtk /usr/bin/