home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / me34src.zip / me3 / mutt / builtin / cmdline.mut < prev    next >
Text File  |  1995-01-14  |  2KB  |  66 lines

  1. ;; cmdline.mut : mess with the command line (the stuff in argv[]).
  2. ;; Routines:
  3. ;;   process-command-line
  4. ;;     Call this routine when its time to process the command line.  It
  5. ;;       will call COMMAND-LINE-HOOK for each argv[] until one of the hooks
  6. ;;       handles the arg.  If none do, an error message is issued and
  7. ;;       processing is stopped.  Calling process-command-line again will
  8. ;;       continue the processing, skipping the bad arg.
  9. ;; Hooks and related routines:
  10. ;;   COMMAND-LINE-HOOK
  11. ;;     Use (register-hook) to register your command line processor.  It
  12. ;;     will be called for each argv[].  If the arg is for you, process
  13. ;;     it in some way, shape or form and return TRUE.  Else returns
  14. ;;     FALSE.
  15. ;;   (next-cmd-line-arg pointer-to-string)
  16. ;;     If you need another command line arg, use this.  If there are args
  17. ;;     left on the command line, it puts the next one into string and
  18. ;;     returns TRUE.  Else "<no arg>" is put into the string and FALSE
  19. ;;     is returned.
  20. ;;   (any-cmd-line-args-left)
  21. ;;     Returns TRUE if there are any command line args left to be
  22. ;;       processed.
  23. ;;   (push-back-cmd-arg)
  24. ;;     If, for some reason, the arg needs to be processed again, you can
  25. ;;       call this.
  26. ;;   (stop-processing-cmd-line)
  27. ;;     If you want process-command-line to stop (after this arg (or before
  28. ;;       if you push it back)), call this.  Processing will resume when
  29. ;;       process-command-line is called again.
  30. ;;     
  31. ;; C Durland 10/92    Public Domain
  32.  
  33. (bool stop-now)
  34. (int nth-arg)
  35.  
  36. (defun
  37.   MAIN { (nth-arg 1) }
  38.   process-command-line
  39.   {
  40.     (string the-arg)
  41.  
  42.     (stop-now FALSE)
  43.     (while (next-cmd-line-arg the-arg)
  44.       {
  45.     (if (not (command-line-hook the-arg))
  46.       {
  47.         (msg "Unknown command line option: \"" the-arg "\"!")
  48.         FALSE
  49.         (done)
  50.       })
  51.     (if stop-now (break))
  52.       })
  53.     TRUE
  54.   }
  55.   next-cmd-line-arg (string the-arg)
  56.   {
  57.     (if (== nth-arg (argc)) { (the-arg "<no arg>") FALSE (done) })
  58.     (the-arg (argv nth-arg))
  59.     (+= nth-arg 1)
  60.     TRUE
  61.   }
  62.   any-cmd-line-args-left   { (< nth-arg (argc)) }
  63.   push-back-cmd-arg        { (if (> nth-arg 1) (-= nth-arg 1)) }
  64.   stop-processing-cmd-line { (stop-now TRUE) }
  65. )
  66.