quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

dns-dump.cc (2033B)


      1 /* MIT License
      2  *
      3  * Copyright (c) The c-ares project and its contributors
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a copy
      6  * of this software and associated documentation files (the "Software"), to deal
      7  * in the Software without restriction, including without limitation the rights
      8  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      9  * copies of the Software, and to permit persons to whom the Software is
     10  * furnished to do so, subject to the following conditions:
     11  *
     12  * The above copyright notice and this permission notice (including the next
     13  * paragraph) shall be included in all copies or substantial portions of the
     14  * Software.
     15  *
     16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     22  * SOFTWARE.
     23  *
     24  * SPDX-License-Identifier: MIT
     25  */
     26 #include <sys/types.h>
     27 #include <fcntl.h>
     28 #ifdef _MSC_VER
     29 #  include <io.h>
     30 #else
     31 #  include <unistd.h>
     32 #endif
     33 
     34 #include <iostream>
     35 #include <vector>
     36 
     37 #include "dns-proto.h"
     38 
     39 namespace ares {
     40 
     41 static void ShowFile(const char* filename) {
     42   int fd = open(filename, O_RDONLY);
     43   if (fd < 0) {
     44     std::cerr << "Failed to open '" << filename << "'" << std::endl;
     45     return;
     46   }
     47   std::vector<unsigned char> contents;
     48   while (true) {
     49     unsigned char buffer[1024];
     50     ares_ssize_t len = read(fd, buffer, sizeof(buffer));
     51     if (len <= 0) break;
     52     contents.insert(contents.end(), buffer, buffer + len);
     53   }
     54   std::cout << PacketToString(contents) << std::endl;
     55 }
     56 
     57 }  // namespace ares
     58 
     59 int main(int argc, char* argv[]) {
     60   for (int ii = 1; ii < argc; ++ii) {
     61     ares::ShowFile(argv[ii]);
     62   }
     63   return 0;
     64 }
     65