mirror of
https://github.com/windneiro/vzor.git
synced 2026-01-19 03:09:46 +00:00
Bug fixes
This commit is contained in:
10
build.zig
10
build.zig
@@ -1,11 +1,11 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
// Стандартные настройки для текущей системы (когда просто делаешь zig build run)
|
// Standard target options for the current system (when just doing zig build run)
|
||||||
const target = b.standardTargetOptions(.{});
|
const target = b.standardTargetOptions(.{});
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
// Основной исполняемый файл
|
// Main executable file
|
||||||
const exe = b.addExecutable(.{
|
const exe = b.addExecutable(.{
|
||||||
.name = "vzor",
|
.name = "vzor",
|
||||||
.root_source_file = b.path("src/main.zig"),
|
.root_source_file = b.path("src/main.zig"),
|
||||||
@@ -15,16 +15,16 @@ pub fn build(b: *std.Build) void {
|
|||||||
|
|
||||||
b.installArtifact(exe);
|
b.installArtifact(exe);
|
||||||
|
|
||||||
// Команда для запуска (zig build run)
|
// Command to run (zig build run)
|
||||||
const run_cmd = b.addRunArtifact(exe);
|
const run_cmd = b.addRunArtifact(exe);
|
||||||
run_cmd.step.dependOn(b.getInstallStep());
|
run_cmd.step.dependOn(b.getInstallStep());
|
||||||
const run_step = b.step("run", "Run the app");
|
const run_step = b.step("run", "Run the app");
|
||||||
run_step.dependOn(&run_cmd.step);
|
run_step.dependOn(&run_cmd.step);
|
||||||
|
|
||||||
// --- Кросс-компиляция (Build All) ---
|
// --- Cross-compilation (Build All) ---
|
||||||
const build_all_step = b.step("build-all", "Build for all platforms");
|
const build_all_step = b.step("build-all", "Build for all platforms");
|
||||||
|
|
||||||
// Список таргетов, которые нам нужны
|
// List of targets
|
||||||
const targets = [_]std.Target.Query{
|
const targets = [_]std.Target.Query{
|
||||||
.{ .cpu_arch = .x86_64, .os_tag = .linux },
|
.{ .cpu_arch = .x86_64, .os_tag = .linux },
|
||||||
.{ .cpu_arch = .x86_64, .os_tag = .windows },
|
.{ .cpu_arch = .x86_64, .os_tag = .windows },
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ pub fn main() !void {
|
|||||||
|
|
||||||
const stdout = std.io.getStdOut().writer();
|
const stdout = std.io.getStdOut().writer();
|
||||||
const start_time = utils.getTimestampMs();
|
const start_time = utils.getTimestampMs();
|
||||||
// Получаем аргументы командной строки
|
// Getting command line arguments
|
||||||
var args = try std.process.argsWithAllocator(allocator);
|
var args = try std.process.argsWithAllocator(allocator);
|
||||||
defer args.deinit();
|
defer args.deinit();
|
||||||
|
|
||||||
// Пропускаем имя самой программы (первый аргумент)
|
// Skip the name of the program itself (first argument)
|
||||||
_ = args.next();
|
_ = args.next();
|
||||||
|
|
||||||
// Если аргумент передан — используем его, иначе дефолт
|
// If an argument is passed — use it, otherwise default
|
||||||
const target = args.next() orelse "127.0.0.1";
|
const target = args.next() orelse "127.0.0.1";
|
||||||
|
|
||||||
try stdout.print(config.UI.welcome, .{ config.APP_NAME, config.APP_VERSION });
|
try stdout.print(config.UI.welcome, .{ config.APP_NAME, config.APP_VERSION });
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ pub fn scanPort(allocator: std.mem.Allocator, ip: []const u8, port: u16, timeout
|
|||||||
|
|
||||||
pub fn scanRangeParallel(allocator: std.mem.Allocator, ip: []const u8, ports: []const u16) ![]ScanResult {
|
pub fn scanRangeParallel(allocator: std.mem.Allocator, ip: []const u8, ports: []const u16) ![]ScanResult {
|
||||||
const results = try allocator.alloc(ScanResult, ports.len);
|
const results = try allocator.alloc(ScanResult, ports.len);
|
||||||
// Инициализируем результаты дефолтными значениями
|
// Initialize results with default values
|
||||||
for (results) |*r| {
|
for (results) |*r| {
|
||||||
r.* = .{ .port = 0, .is_open = false };
|
r.* = .{ .port = 0, .is_open = false };
|
||||||
}
|
}
|
||||||
@@ -78,10 +78,10 @@ pub fn scanRangeParallel(allocator: std.mem.Allocator, ip: []const u8, ports: []
|
|||||||
for (ports, 0..) |port, i| {
|
for (ports, 0..) |port, i| {
|
||||||
threads[i] = try std.Thread.spawn(.{}, struct {
|
threads[i] = try std.Thread.spawn(.{}, struct {
|
||||||
fn worker(alloc: std.mem.Allocator, ip_addr: []const u8, p: u16, res_ptr: *ScanResult) void {
|
fn worker(alloc: std.mem.Allocator, ip_addr: []const u8, p: u16, res_ptr: *ScanResult) void {
|
||||||
// Записываем результат напрямую в память по указателю
|
// We write the result directly into memory using the pointer
|
||||||
res_ptr.* = scanPort(alloc, ip_addr, p, config.DEFAULT_TIMEOUT_MS) catch |err| {
|
res_ptr.* = scanPort(alloc, ip_addr, p, config.DEFAULT_TIMEOUT_MS) catch |err| {
|
||||||
res_ptr.* = .{ .port = p, .is_open = false, .error_msg = @errorName(err) };
|
res_ptr.* = .{ .port = p, .is_open = false, .error_msg = @errorName(err) };
|
||||||
return; // Просто выходим, ничего не возвращая
|
return; // We just leave without returning anything
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}.worker, .{ allocator, ip, port, &results[i] });
|
}.worker, .{ allocator, ip, port, &results[i] });
|
||||||
|
|||||||
Reference in New Issue
Block a user