void put_cd(s_client cl) { char server_cd[BUFF_MAX]; my_send(cl.server_socket, cl.cmd, my_strlen(cl.cmd), (int)NULL); view_query(server_cd, cl); }
void put_ls(s_client cl) { char server_ls[BUFF_MAX]; my_send(cl.server_socket, "ls", my_strlen("ls"), (int)NULL); view_query(server_ls, cl); my_memset(server_ls, 0, BUFF_MAX); }
void put_pwd(s_client cl) { char server_querry[BUFF_MAX]; my_send(cl.server_socket, "pwd", my_strlen("pwd"), (int)NULL); view_query(server_querry, cl); my_putchar('\n'); }
int count_query(int a, int b){ view_query(a,b); int L=0, cnt=0; ci_iter it1, it2; if (ci.count(a)){ it1 = ci.lower_bound(a); L = it1->second.pos; } else { int L1,R1; it1 = find_piece(ci, N, a, L1, R1); for (int i=L1; i<R1; i++) if (arr[i] >= a && arr[i] < b) cnt++; L = R1; it1++; } assert(it1 != ci.end()); it1++; if (ci.count(b)){ it2 = ci.lower_bound(b); } else { int L2, R2; it2 = find_piece(ci, N, b, L2, R2); for (int i=L2; i<R2; i++) if (arr[i] >= a && arr[i] < b) cnt++; assert(it1 != it2); it2--; } while (true){ cnt += it1->second.prev_pos() - L; L = it1->second.pos; if (it1 == it2) break; it1++; } return cnt; }