Tips

Mac OS Xで短いユーザー名を取得する

日付2010/12/28
ID76222 (英語原文参照)
バージョンv11
プラットフォームMac/Win

Current machine ownerコマンドは, 4D 2004以前のバージョンでMac OS Xの短いユーザー名を返していました。4D v11 SQL以降では, マシンのカレントユーザーアカウントで設定されたフルネームが返されるようになりました。

短いユーザー名が必要であれば, ディレクトリパスから正規表現で切り出すことができます。

If (True)
    If (False)
    //*************************************************************************
    //
    // Current_Machine_User
    //
    // Purpose: To return the Mac OS X current users name. 
    // Acquire the current users name from the directory path to the 
    // Active 4D folder which is created by default on Mac OS at:
    // {Disk}:Users:Current user:Library:Preferences:4D
    //
    // $0 - TEXT - current users name
    //
    //*************************************************************************
   End if 
   C_TEXT($MethodName_T)
   $MethodName_T:=Current method name
    //===================== Declare Variables ==================================
    //method_parameters_declarations
   C_TEXT($0)
    //------------------------------------------------------------------------
    //method_wide_constants_declarations
    //------------------------------------------------------------------------
    //local_variable_declarations
   C_LONGINT($From_L;$Len_L)
   C_TEXT($LookBk_T;$LookFwd_T;$RegExPat_T;$UserName_T)
End if 
  //====================== Initialize and Setup ================================

  // The "Lookback" pattern
  //
$LookBk_T:="(?<=Users:)"

  // The "Lookahead" pattern
  //
$LookFwd_T:="(?=:Library)"

  // The Regex "Lookaround" pattern
  // \w matches any word character (alphanumeric & underscore).
  // \ escape char has to be escaped in 4D, hence \\.
  //
$RegExPat_T:=$LookBk_T+"\\w+"+$LookFwd_T

  // Get the Active 4D Folder
  //
$Path_T:=Get 4D folder(Active 4D Folder)

  //======================== Method Actions ==================================

If (Match regex($RegExPat_T;$Path_T;1;$From_L;$Len_L))
   $UserName_T:=Substring($Path_T;$From_L;$Len_L-1)
End if 

  //======================== Clean up and Exit =================================

$0:=$UserName_T