mirror of
https://github.com/nmap/nmap.git
synced 2025-12-12 02:39:03 +00:00
Simplify output_rangelist_given_ports.
This commit is contained in:
31
output.cc
31
output.cc
@@ -1075,25 +1075,20 @@ int log_open(int logt, int append, char *filename) {
|
|||||||
rangelist to the log stream given (such as LOG_MACHINE or LOG_XML) */
|
rangelist to the log stream given (such as LOG_MACHINE or LOG_XML) */
|
||||||
static void output_rangelist_given_ports(int logt, unsigned short *ports,
|
static void output_rangelist_given_ports(int logt, unsigned short *ports,
|
||||||
int numports) {
|
int numports) {
|
||||||
int i, previous_port = -2, range_start = -2, port;
|
int start, end;
|
||||||
char outpbuf[128];
|
|
||||||
|
|
||||||
for (i = 0; i <= numports; i++) {
|
start = 0;
|
||||||
port = (i < numports) ? ports[i] : 0xABCDE;
|
while (start < numports) {
|
||||||
if (port != previous_port + 1) {
|
end = start;
|
||||||
outpbuf[0] = '\0';
|
while (end + 1 < numports && ports[end + 1] == ports[end] + 1)
|
||||||
if (range_start != previous_port && range_start != -2)
|
end++;
|
||||||
sprintf(outpbuf, "-%hu", previous_port);
|
if (start > 0)
|
||||||
if (port != 0xABCDE) {
|
log_write(logt, ",");
|
||||||
if (range_start != -2)
|
if (start == end)
|
||||||
strcat(outpbuf, ",");
|
log_write(logt, "%hu", ports[start]);
|
||||||
sprintf(outpbuf + strlen(outpbuf), "%hu", port);
|
else
|
||||||
}
|
log_write(logt, "%hu-%hu", ports[start], ports[end]);
|
||||||
if (*outpbuf)
|
start = end + 1;
|
||||||
log_write(logt, "%s", outpbuf);
|
|
||||||
range_start = port;
|
|
||||||
}
|
|
||||||
previous_port = port;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user