This file is indexed.

/usr/share/octave/packages/ocs-0.1.5/utl/utl_sbn_server.m is in octave-ocs 0.1.5-2+deb9u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
## Copyright (C) 2006,2007,2008  Carlo de Falco            
##
## This file is part of:
## OCS - A Circuit Simulator for Octave
##
## OCS is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program (see the file LICENSE); if not,
## see <http://www.gnu.org/licenses/>.
##
## author: Carlo de Falco <cdf _AT_ users.sourceforge.net> 

## -*- texinfo -*-
## @deftypefn{Function File} {} utl_sbn_server(@var{port})
## Listen for socket connections on port @var{port}, read a command @
## and return the corresponding output to the socket. 
## @end deftypefn

function utl_sbn_server (portnum)
  
  QUITMESSAGE    = "quit UTLsbnserver";
  CONFIRMMESSAGE = "confirmed";

  ## CREATE THE SOCKET AND WAIT FOR CONNECTIONS
  s = socket(AF_INET, SOCK_STREAM, 0);
  if s < 0
    error("cannot create socket\n");
  end
  
  if bind(s, portnum) < 0
    error("bind failed\n");
  end

  if listen(s, 1) < 0
    error("listen failed\n");
  end

  ##MAIN LOOP
  while 1

    ##ACCEPT CONNECTIONS
    c = accept(s);
    if c < 0
      error("connection error")
    end
    
    ## READ COMMANDS FROM THE SOCKET  
    msg = readstring (c)
    
    ##IF CLIENT SENT SHUTDOWN MESSAGE EXIT
    if strcmp (msg,QUITMESSAGE)
      printf("client requested server shutdown, goodbye!\n");
      disconnect(c); disconnect(s);
      break
    end
    
    ##EXECUTE COMMANDS FROM THE CLIENT
    [A,B,C] = eval(msg);
    
    ##SEND OUTPUT TO THE CLIENT
    str = [ sprintf("%17g ",A) "\n" sprintf("%17g ",B)...
	   "\n" sprintf("%17g ",C) "\n"]
    
    send(c,str);

    ##END CONNECTION
    disconnect(c);
    
  end

  disconnect(s);
endfunction


function msg = readstring (c)
  
  BUFFER_SIZE = 255;

  msg  = '';
  read = BUFFER_SIZE;

  while read >= BUFFER_SIZE
    newmsg = char(recv(c, BUFFER_SIZE));
    read = length(newmsg)
    msg = [ msg newmsg];
  end

endfunction