File: conv.mac

package info (click to toggle)
linpac 0.28-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,984 kB
  • sloc: cpp: 18,310; sh: 10,697; ansic: 4,036; makefile: 210; perl: 101
file content (178 lines) | stat: -rw-r--r-- 3,893 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
:macro Convers
echo
echo Konferencny server LinPac %V
echo Login %C v %T
echo
if %(exist STN_NICKNAME) = 1
  echo Ahoj %STN_NICKNAME, vitaj v konferencii !
else
  echo Ahoj %N, vitaj v konferencii !
endif
echo Napis /H pre napovedu
echo

;;*********************** INICIALIZACIA ************************
set CONVERS "LP_CONVERS"  ;;Pre recognition kanaly v konferencii
set LOGTIME %T            ;;Cas prihlasenia
set CALL %C               ;;Znacka
if "%N" = "%U"            ;;Zisti meno uzivatela
  set NAME "???"
else
  set NAME "%N"
endif
set LAST "%<"
set OUT1 ""
set OUT2 ""
set OUT3 ""
set OUT4 ""
set OUT5 ""
set OUT6 ""
set OUT7 ""
set OUT8 ""
set MSG1 ""
set MSG2 ""
set MSG3 ""
set MSG4 ""
set MSG5 ""
set MSG6 ""
set MSG7 ""
set MSG8 ""

set LAST "*** Vstupuje do konferencie v %T ***"
conv @SENDALL

label MAIN

  flush

  ;;**** KONTROLUJ SPRAVY Z OSTATNYCH KANALOV ****
  set i 1
  label TESTOUT
    if "%OUT%i" <> ""      ;;Je to sprava ?
      echo <%C@%i>         ;; ANO - vypis znacku 
      echo %OUT%i          ;;       vypis spravu
      set OUT%i ""         ;;       vycisti zasobnik
      flush
    endif
    if "%MSG%i" <> ""      ;;To iste pre perzonalne spravy
      echo *%C@%i*
      echo %MSG%i
      set MSG%i ""
      flush
    endif
    set i %[%i+1]
  if (%i <= 8) goto TESTOUT  ;;Zopakovat pre kazdy kanal ?

  set LAST "%<"              ;;Nova sprava ?

if ("%LAST" = "") goto MAIN

  ;;UZIVATELSKA SPRAVA
  if ("%(strleft 1 "%LAST")" = "/") goto COMMAND ;;Zacina lomitkom - je to prikaz

  conv @SENDALL ;;Nie je to prikaz - posli to vsetkym ako text
goto MAIN

;;**** POSLI SPRAVU VSETKYM STANICIAM ****
label SENDALL
  set I 1
  label SENDING
    if "%CONVERS@%I" = "LP_CONVERS"    ;;Ak je kanal v konferencii
      if %I <> %K                      ;; (a nie je to nas kanal)
        set@%I OUT%K "%LAST"           ;;Posli text
      endif
    endif
    set I %[%I+1]
  if (%I <= 8) goto SENDING
return


;; **** VYHODNOTENIE PRIKAZOV ****
label COMMAND
set CMD "%(Upcase %LAST)"
if (%CMD = /Q) goto KONEC
if (%CMD = /H) goto HELP
if (%CMD = /W) goto WHO
if (%CMD = /U) goto WHO
if (%(strleft 4 "%CMD") = "/MSG") goto MSGS
echo *** Neznamy prikaz.
goto MAIN


;; ************************ PRIKAZ /H  **************************
label HELP
echo *** Dostupne prikazy
echo   /H             -  tato napoveda
echo   /MSG <znacka>  -  posli spravu stanici
echo   /Q             -  opustit konferenciu
echo   /W nebo /U     -  vypis zoznam uzivatelov
echo ***
goto MAIN


;; ************************ PRIKAZ /MSG *************************
label MSGS

;; ODSTRAN '/MSG'
set I %(strpos " " "%LAST")
if (%I = 0) goto MSGERROR
set I %[%(strlen %LAST) - %I - 1]
set LAST "%(strr %I "%LAST")"

;; SPOJ SPRAVU A ZNACKU
set I %(strpos " " "%LAST")
if (%I = 0) goto MSGERROR
set MSGC "%(strleft %I "%LAST")"
set MSGC "%(upcase "%MSGC")"
set I %[%(strlen "%LAST") - %I - 1]
set LAST "%(strr %I %LAST)"

;; NAJDI ZNACKU
set FND 0
set I 1
label CMSGS
  if %CALL@%I = %MSGC
    set@%I MSG%K "%LAST"
    set FND 1
  endif
  set I %[%I+1]
if (%I < 9) goto CMSGS
if %FND = 0
  echo *** Uzivatel sa v konferencii nenachadza
endif
unset MSGC FND
goto MAIN

;; Chyba pri MSGS
label MSGERROR
echo *** Musis zadat znacku a spravu
goto MAIN


; ************************ PRIKAZ /W **********************
label WHO
echo *** Vypis uzivatelov:
set I 1
label CWHO
  if "%CONVERS@%I" = "LP_CONVERS"
    echo %CALL@%I - %NAME@%I - pripojeny od %LOGTIME@%I
  endif
  set I %[%I+1]
if (%I < 9) goto CWHO
echo ***
goto MAIN


; ***************** OPUSTENIE KONFERENCIE ****************
label KONEC
set LAST "*** Opusta konferenciu v %T ***"
echo Logout v %T.
if %(exist STN_NICKNAME) = 1
  echo Dopocutia, %STN_NICKNAME !
else
  echo Dopocutia, %N !
endif
conv @SENDALL
unset CONVERS LOGTIME CALL NAME I CMD
unset OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8
unset MSG1 MSG2 MSG3 MSG4 MSG5 MSG6 MSG7 MSG8