曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.かつては雑草やヨモギと共に雨や露を分かち合っていたが、今では松やヒノキと共に霜や雪に耐えている。曾与蒿藜同雨露,Once sharing rain and dew with weeds and wormwood, now enduring frost and snow with pines and cypresses.终随松柏到冰霜.曾与蒿藜同雨露한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.,终随松柏到冰霜.譖セ荳手珍阯懷酔髮ィ髴イ�檎サ磯囂譚セ譟丞芦蜀ー髴�曾与蒿藜同雨露,鏇句笌钂胯棞鍚岄洦闇诧紝缁堥殢鏉炬煆鍒板啺闇�终随松柏到冰霜.曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.曾与蒿藜同雨露,终随松柏到冰霜.
# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
#
# $Id: fs.tcl,v 1.6 2004/03/28 02:44:57 hobbs Exp $
#
# File system routines to handle some file system variations
# and how that interoperates with the Tix widgets (mainly HList).
#
# Copyright (c) 2004 ActiveState
##
## Cross-platform
##
proc tixFSSep {} { return "/" }
proc tixFSNormalize {path} {
# possibly use tixFSTilde ?
return [file normalize $path]
}
proc tixFSVolumes {} {
return [file volumes]
}
proc tixFSAncestors {path} {
return [file split [file normalize $path]]
}
# how a filename should be displayed
proc tixFSDisplayFileName {path} {
if {$path eq [file dirname $path]} {
return $path
} else {
return [file tail $path]
}
}
# dir: Make a listing of this directory
# showSubDir: Want to list the subdirectories?
# showFile: Want to list the non-directory files in this directory?
# showPrevDir: Want to list ".." as well?
# showHidden: Want to list the hidden files?
#
# return value: a list of files and/or subdirectories
#
proc tixFSListDir {dir showSubDir showFile showPrevDir \
showHidden {pattern ""}} {
if {$pattern eq ""} { set pattern [list "*"] }
if {$::tcl_platform(platform) eq "unix"
&& $showHidden && $pattern eq "*"} { lappend pattern ".*" }
if {[catch {eval [list glob -nocomplain -directory $dir] \
$pattern} files]} {
# The user has entered an invalid or unreadable directory
# %% todo: prompt error, go back to last succeed directory
return ""
}
set list ""
foreach f [lsort -dictionary $files] {
set tail [file tail $f]
# file tail handles this automatically
#if {[string match ~* $tail]} { set tail ./$tail }
if {[file isdirectory $f]} {
if {$tail eq "."} { continue }
if {$showSubDir} {
if {$tail eq ".." && !$showPrevDir} { continue }
lappend list $tail
}
} else {
if {$showFile} { lappend list $tail }
}
}
return $list
}
# in: internal name
# out: native name
proc tixFSNativeNorm {path} {
return [tixFSNative [tixFSNormalize $path]]
}
# tixFSDisplayName --
#
# Returns the name of a normalized path which is usually displayed by
# the OS
#
proc tixFSDisplayName {path} {
return [tixFSNative $path]
}
proc tixFSTilde {path} {
# verify that paths with leading ~ are files or real users
if {[string match ~* $path]} {
# The following will report if the user doesn't exist
if {![file isdirectory $path]} {
set path ./$path
} else {
set path [file normalize $path]
}
}
return $path
}
proc tixFSJoin {dir sub} {
return [tixFSNative [file join $dir [tixFSTilde $sub]]]
}
proc tixFSNative {path} {
return $path
}
if {$::tcl_platform(platform) eq "windows"} {
##
## WINDOWS
##
# is an absoulte path only if it starts with a baclskash
# or starts with "<drive letter>:"
#
# in: nativeName
#
proc tixFSIsAbsPath {nativeName} {
set ptype [file pathtype $nativename]
return [expr {$ptype eq "absolute" || $ptype eq "volumerelative"}]
}
# tixFSIsValid --
#
# Checks whether a native pathname contains invalid characters.
#
proc tixFSIsValid {path} {
#if {$::tcl_platform(platform) eq "windows"} {set bad "\\/:*?\"<>|\0"}
return 1
}
proc tixFSExternal {path} {
# Avoid normalization on root adding unwanted volumerelative pwd
if {[string match -nocase {[A-Z]:} $path]} {
return $path/
}
return [file normalize $path]
}
proc tixFSInternal {path} {
# Only need to watch for ^[A-Z]:/$, but this does the trick
return [string trimright [file normalize $path] /]
}
} else {
##
## UNIX
##
proc tixFSIsAbsPath {path} {
return [string match {[~/]*} $path]
}
# tixFSIsValid --
#
# Checks whether a native pathname contains invalid characters.
#
proc tixFSIsValid {path} { return 1 }
proc tixFSExternal {path} { return $path }
proc tixFSInternal {path} { return $path }
}