1: /* 2: * exec.java 0.1 96/08/01 3: * 4: * Copyright (c) 1996 MARUYAMA Fujio All Rights Reserved. 5: * 6: * Permission to use, copy, modify, and distribute this software 7: * and its documentation for NON-COMMERCIAL purposes and without 8: * fee is hereby granted provided that this copyright notice 9: * appears in all copies. 10: * 11: * Mail : maruyama@wakhok.ac.jp 12: * 13: */ 14: 15: import java.lang.* ; 16: import java.io.* ; 17: 18: class exec { 19: Process proc = null ; 20: DataInputStream in = null; 21: PrintStream out = null ; 22: String cmd[] = new String[3] ; 23: StringBuffer args = new StringBuffer(); 24: 25: public void setCommandArray(String arg[]) { 26: if (arg.length == 0) return ; 27: for (int i = 0; i < arg.length; i++) { 28: args.append(' ').append(arg[i]); 29: } 30: cmd[0] = "/usr/bin/ksh"; 31: cmd[1] = "-c"; 32: cmd[2] = args.toString(); 33: } 34: 35: exec( String arg[] ){ 36: try{ 37: setCommandArray(arg); 38: proc = Runtime.getRuntime().exec(cmd); 39: in = new DataInputStream(proc.getInputStream()); 40: out = new PrintStream(proc.getOutputStream()); 41: } catch ( Exception ex){ 42: System.err.println("exec: "+ex); 43: } 44: } 45: 46: void prout(OutputStream pout){ 47: try{ 48: String line = null ; 49: while( true ){ 50: if ( in.available() > 0 ){ 51: while( (line = in.readLine()) != null ){ 52: for( int i=0; i < line.length(); i++ ) 53: pout.write( line.charAt(i) ); 54: pout.write( 'n' ); 55: } 56: break ; 57: } else { 58: Thread.sleep(200); 59: } 60: } 61: } catch ( Exception ex){ 62: System.err.println("prout:"+ex); 63: } 64: } 65: 66: public static void main(String argv[]){ 67: new exec(argv).prout(System.out); 68: } 69: }
1: /* 2: * parser.java 0.1 96/08/01 3: * 4: * Copyright (c) 1996 MARUYAMA Fujio All Rights Reserved. 5: * 6: * Permission to use, copy, modify, and distribute this software 7: * and its documentation for NON-COMMERCIAL purposes and without 8: * fee is hereby granted provided that this copyright notice 9: * appears in all copies. 10: * 11: * Mail : maruyama@wakhok.ac.jp 12: * 13: */ 14: 15: import java.io.*; 16: import java.net.*; 17: 18: class Parser extends StreamTokenizer { 19: 20: Parser(InputStream in ){ 21: super(in); 22: resetSyntax(); 23: 24: whitespaceChars(0, ' '); 25: wordChars( 33, 255); 26: 27: ordinaryChar('<'); 28: ordinaryChar('>'); 29: } 30: 31: public static void main (String argv[]){ 32: Parser tok = null; 33: try { 34: String src = argv[0] ; 35: if ( src.startsWith("http://") ){ 36: tok = new Parser(new URL(src).openStream()); 37: } else { 38: tok = new Parser(new FileInputStream(src)); 39: } 40: 41: String text = "" ; 42: String tag = "" ; 43: String tagName = "" ; 44: String tmp = "" ; 45: 46: int ret ; 47: boolean inTag = false ; 48: 49: while( (ret = tok.nextToken()) != TT_EOF ){ 50: switch ( ret ) { 51: case '<' : // System.out.print("<"); 52: if ( text.length() != 0 ){ 53: System.out.println("Text: " + text); 54: } 55: tag=""; 56: inTag=true; 57: break ; 58: case '>' : // System.out.print(">"); 59: System.out.println("Tag : " + tag); 60: text=""; 61: inTag=false; 62: break ; 63: default : tmp = tok.sval ; 64: if ( inTag ){ 65: tag += tmp + " "; 66: } else { 67: text += tmp + " "; 68: } 69: } 70: } 71: } catch (Exception e ){ 72: System.err.println("Exception :" + e); 73: } 74: } 75: }
1: /* 2: * homedir.java 0.1 96/08/01 3: * 4: * Copyright (c) 1996 MARUYAMA Fujio All Rights Reserved. 5: * 6: * Permission to use, copy, modify, and distribute this software 7: * and its documentation for NON-COMMERCIAL purposes and without 8: * fee is hereby granted provided that this copyright notice 9: * appears in all copies. 10: * 11: * Mail : maruyama@wakhok.ac.jp 12: * 13: */ 14: 15: import java.lang.* ; 16: import java.io.* ; 17: import java.util.* ; 18: 19: class homedir { 20: Process proc = null ; 21: DataInputStream in = null; 22: String cmd[] = new String[2] ; 23: Hashtable ht = new Hashtable(); 24: StringTokenizer st = null ; 25: 26: String line = null ; 27: String username = null ; 28: String dummy = null ; 29: String homedir = null ; 30: 31: public void setCommandArray() { 32: cmd[0] = "/usr/bin/ypcat"; 33: cmd[1] = "passwd"; 34: } 35: 36: homedir(){ 37: try{ 38: setCommandArray(); 39: proc = Runtime.getRuntime().exec(cmd); 40: in = new DataInputStream(proc.getInputStream()); 41: } catch ( Exception ex){ 42: System.err.println("homedir: "+ex); 43: } 44: } 45: 46: String fillnull(String str){ 47: StringBuffer sb = new StringBuffer(); 48: for(int i=0; i < str.length() - 1; i++){ 49: char first = str.charAt(i); 50: char second = str.charAt(i+1); 51: if ( first == ':' && first == second ){ 52: sb.append(first); 53: sb.append(' '); 54: } else { 55: sb.append(first); 56: } 57: } 58: return new String(sb); 59: } 60: 61: void register(){ 62: try{ 63: 64: while( true ){ 65: if ( in.available() > 0 ){ 66: while( (line = in.readLine()) != null ){ 67: if ( line.indexOf("::") != -1 ) 68: line=fillnull(line); 69: st = new StringTokenizer(line,":n"); 70: if ( st.hasMoreTokens() ) { 71: username = st.nextToken(); 72: dummy = st.nextToken(); 73: dummy = st.nextToken(); 74: dummy = st.nextToken(); 75: dummy = st.nextToken(); 76: homedir = st.nextToken(); 77: if ( username != null && homedir != null ) 78: ht.put(username,homedir); 79: } 80: continue; 81: } 82: break ; 83: } else { 84: Thread.sleep(200); 85: } 86: } 87: } catch ( Exception ex){ 88: System.err.println("register:"+ex); 89: } 90: } 91: 92: public static void main(String argv[]){ 93: homedir hd = new homedir(); 94: hd.register(); 95: System.out.println( (String)hd.ht.get(argv[0]) ); 96: } 97: }