Gaucheでgetpassっぽいやつを実現してみる
30分プログラム、その354。GaucheでPythonのgetpassモジュールっぽいやつを実現している。
Unix/Linuxプログラミング理論と実践の端末の項目を読んでたら、"エコーなしの入力を実現するにはsttyを使うだけで簡単にできるよ"と書いてあったので、それを試したかったってのもある。
使い方
$ gosh getpass.scm Password: you inputed: hoge
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; getpass.scm - ;; ;; Copyright(C) 2008 by mzp ;; Author: MIZUNO Hiroki / mzpppp at gmail dot com ;; http://howdyworld.org ;; ;; Timestamp: 2008/08/24 22:16:29 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under MIT Lincence. ;; (use gauche.process) (define (no-echo f) (unwind-protect (begin (sys-system "stty -echo") (f)) (sys-system "stty echo"))) (define (get-password) (display "Password:") (flush) (no-echo (lambda () (begin0 (read) (display #\newline))))) (define pass (get-password)) (print "you inputed: " pass)