@nockdev/awf 6.2.6 → 6.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/config.yaml +2 -2
- package/.agent/core/AGENT_BEHAVIOR.md +1 -1
- package/.agent/core/AUDIT_POLICY.md +1 -1
- package/.agent/core/CACHE.md +1 -1
- package/.agent/core/DATA_SAFETY.md +1 -1
- package/.agent/core/MEMORY_PATHS.yaml +2 -2
- package/.agent/core/PERMISSIONS.md +1 -1
- package/.agent/core/README.md +1 -1
- package/.agent/core/VERSION.yaml +4 -4
- package/.agent/core/archive/ACTIVE_MEMORY.yaml +2 -2
- package/.agent/core/archive/CHECKPOINT.yaml +2 -2
- package/.agent/core/archive/CLEANUP_ENGINE.yaml +2 -2
- package/.agent/core/archive/CONTEXT_INJECTOR.yaml +2 -2
- package/.agent/core/archive/CONTEXT_LOADER.yaml +1 -1
- package/.agent/core/archive/CONTEXT_OPTIMIZATION.yaml +1 -1
- package/.agent/core/archive/CONTEXT_PRIORITY.yaml +2 -2
- package/.agent/core/archive/FLOW_ENGINE.yaml +1 -1
- package/.agent/core/archive/GRAPH_MEMORY.yaml +1 -1
- package/.agent/core/archive/HYBRID_ROUTER.yaml +1 -1
- package/.agent/core/archive/INTENT_DETECTION.yaml +1 -1
- package/.agent/core/archive/MEMORY_CONSOLIDATION.yaml +3 -3
- package/.agent/core/archive/MEMORY_ENGINE.yaml +2 -2
- package/.agent/core/archive/MEMORY_UTILS.yaml +1 -1
- package/.agent/core/archive/REFLECTION_ENGINE.yaml +1 -1
- package/.agent/core/archive/ROUTER.yaml +4 -4
- package/.agent/core/archive/SCORING_FORMULA.yaml +2 -2
- package/.agent/core/archive/SEMANTIC_ENGINE.yaml +1 -1
- package/.agent/core/archive/SKILLS_FLOW.yaml +1 -1
- package/.agent/core/archive/STATE_MACHINE.yaml +1 -1
- package/.agent/core/archive/SUMMARIZATION_ENGINE.yaml +2 -2
- package/.agent/core/archive/TOKEN_BUDGETS.yaml +2 -2
- package/.agent/core/archive/TOKEN_LOADING.yaml +2 -2
- package/.agent/core/archive/TOKEN_SUMMARY.yaml +2 -2
- package/.agent/core/reference/CODING_STYLES.yaml +1 -1
- package/.agent/core/reference/LIBRARY_REGISTRY.yaml +1 -1
- package/.agent/core/reference/MCP_TOOLS.yaml +2 -2
- package/.agent/core/reference/PATTERNS.yaml +1 -1
- package/.agent/core/reference/SKILL_SCHEMA.yaml +1 -1
- package/.agent/i18n/en.yaml +6 -6
- package/.agent/i18n/vi.yaml +6 -6
- package/.agent/ide/README.md +1 -1
- package/.agent/ide/amazonq.json +1 -1
- package/.agent/ide/amp.json +1 -1
- package/.agent/ide/antigravity.json +1 -1
- package/.agent/ide/augment.json +1 -1
- package/.agent/ide/claude.json +1 -1
- package/.agent/ide/cline.json +1 -1
- package/.agent/ide/cody.json +1 -1
- package/.agent/ide/continue.json +1 -1
- package/.agent/ide/cursor.json +1 -1
- package/.agent/ide/gemini.json +1 -1
- package/.agent/ide/jetbrains.json +1 -1
- package/.agent/ide/kiro.json +1 -1
- package/.agent/ide/opencode.json +1 -1
- package/.agent/ide/roo.json +1 -1
- package/.agent/ide/tabnine.json +1 -1
- package/.agent/ide/trae.json +1 -1
- package/.agent/ide/vscode.json +1 -1
- package/.agent/ide/windsurf.json +1 -1
- package/.agent/ide/zed.json +1 -1
- package/.agent/manifest.yaml +1 -1
- package/.agent/personas/README.md +1 -1
- package/.agent/personas/architect.md +1 -1
- package/.agent/personas/auditor.md +1 -1
- package/.agent/personas/debugger.md +1 -1
- package/.agent/personas/developer.md +1 -1
- package/.agent/personas/devops.md +1 -1
- package/.agent/personas/documenter.md +1 -1
- package/.agent/personas/orchestrator.md +1 -1
- package/.agent/personas/persona.schema.yaml +1 -1
- package/.agent/personas/planner.md +1 -1
- package/.agent/personas/researcher.md +1 -1
- package/.agent/personas/security.md +1 -1
- package/.agent/personas/tester.md +1 -1
- package/.agent/rules/README.md +1 -1
- package/.agent/rules/archive/constitutional/tier-0-core.yaml +5 -5
- package/.agent/rules/archive/constitutional/tier-1-safety.yaml +5 -5
- package/.agent/rules/archive/constitutional/tier-2-execution.yaml +6 -6
- package/.agent/rules/archive/context-management.yaml +1 -1
- package/.agent/rules/archive/duplication-prevention.md +1 -1
- package/.agent/rules/archive/evidence.yaml +1 -1
- package/.agent/rules/archive/project-detection.md +1 -1
- package/.agent/rules/archive/reflection.yaml +1 -1
- package/.agent/rules/archive/versioning.yaml +5 -5
- package/.agent/rules/data/build-systems.yaml +2 -2
- package/.agent/rules/modules/agent-delegation.yaml +2 -2
- package/.agent/rules/modules/edit-verification.yaml +1 -1
- package/.agent/rules/modules/git-workflow.yaml +1 -1
- package/.agent/rules/modules/language.yaml +1 -1
- package/.agent/rules/modules/online-research.yaml +1 -1
- package/.agent/rules/modules/performance-optimization.yaml +2 -2
- package/.agent/rules/modules/quality.yaml +1 -1
- package/.agent/rules/modules/stop-conditions.yaml +1 -1
- package/.agent/rules/modules/terminal-safety.yaml +1 -1
- package/.agent/rules/modules/yagni.yaml +1 -1
- package/.agent/rules/validation-framework.md +1 -1
- package/.agent/skills/README.md +1 -1
- package/.agent/skills/_categories.yaml +2 -2
- package/.agent/skills/ai-ml/rag-patterns/META.yaml +2 -0
- package/.agent/skills/core/api-design/META.yaml +1 -1
- package/.agent/skills/core/authentication/META.yaml +1 -1
- package/.agent/skills/core/error-handling/META.yaml +1 -1
- package/.agent/skills/core/logging/META.yaml +1 -1
- package/.agent/skills/core/observability/META.yaml +1 -1
- package/.agent/skills/core/security/META.yaml +1 -1
- package/.agent/skills/core/security/SKILL.md +1 -1
- package/.agent/skills/cross-cutting/accessibility/META.yaml +1 -1
- package/.agent/skills/cross-cutting/audit-pro/META.yaml +9 -1
- package/.agent/skills/cross-cutting/audit-pro/SKILL.md +61 -5
- package/.agent/skills/cross-cutting/bun/META.yaml +17 -8
- package/.agent/skills/cross-cutting/bun/SKILL.md +1 -1
- package/.agent/skills/cross-cutting/coding-rules/META.yaml +1 -1
- package/.agent/skills/cross-cutting/database/META.yaml +42 -1
- package/.agent/skills/cross-cutting/database/SKILL.md +44 -628
- package/.agent/skills/cross-cutting/database/references/nosql-patterns.md +194 -0
- package/.agent/skills/cross-cutting/database/references/orms-patterns.md +278 -0
- package/.agent/skills/cross-cutting/database/references/postgresql.md +144 -0
- package/.agent/skills/cross-cutting/deno/META.yaml +19 -10
- package/.agent/skills/cross-cutting/deno/SKILL.md +1 -1
- package/.agent/skills/cross-cutting/domyh-design/META.yaml +1 -1
- package/.agent/skills/cross-cutting/domyh-design/data/desktop-colors.yaml +1 -1
- package/.agent/skills/cross-cutting/electron/SKILL.md +15 -616
- package/.agent/skills/cross-cutting/electron/references/ipc-testing.md +114 -0
- package/.agent/skills/cross-cutting/electron/references/native-integrations.md +216 -0
- package/.agent/skills/cross-cutting/electron/references/performance-accessibility.md +118 -0
- package/.agent/skills/cross-cutting/electron/references/updates-persistence.md +165 -0
- package/.agent/skills/cross-cutting/seo/META.yaml +1 -1
- package/.agent/skills/cross-cutting/skill-creator/META.yaml +37 -0
- package/.agent/skills/cross-cutting/skill-creator/SKILL.md +163 -0
- package/.agent/skills/cross-cutting/skill-creator/references/patterns.md +58 -0
- package/.agent/skills/cross-cutting/skill-creator/references/schema-v2.md +44 -0
- package/.agent/skills/cross-cutting/sql/META.yaml +1 -1
- package/.agent/skills/cross-cutting/sql/SKILL.md +1 -1
- package/.agent/skills/cross-cutting/tailwind/META.yaml +1 -1
- package/.agent/skills/cross-cutting/tailwind/SKILL.md +1 -1
- package/.agent/skills/cross-cutting/tdd-workflow/META.yaml +1 -1
- package/.agent/skills/cross-cutting/testing/META.yaml +7 -1
- package/.agent/skills/cross-cutting/testing/SKILL.md +1 -1
- package/.agent/skills/cross-cutting/testing/data/frameworks.yaml +1 -1
- package/.agent/skills/cross-cutting/web-perf/META.yaml +1 -1
- package/.agent/skills/cross-cutting/web-perf/SKILL.md +1 -1
- package/.agent/skills/devops/aws/META.yaml +1 -1
- package/.agent/skills/devops/aws/SKILL.md +101 -16
- package/.agent/skills/devops/azure/SKILL.md +96 -30
- package/.agent/skills/devops/ci-cd/META.yaml +1 -1
- package/.agent/skills/devops/ci-cd/SKILL.md +114 -8
- package/.agent/skills/devops/docker/META.yaml +1 -1
- package/.agent/skills/devops/docker/SKILL.md +96 -8
- package/.agent/skills/devops/gcp/SKILL.md +106 -30
- package/.agent/skills/devops/kubernetes/META.yaml +1 -1
- package/.agent/skills/devops/kubernetes/SKILL.md +125 -8
- package/.agent/skills/frameworks/angular/META.yaml +1 -1
- package/.agent/skills/frameworks/angular/SKILL.md +1 -1
- package/.agent/skills/frameworks/flutter/META.yaml +1 -1
- package/.agent/skills/frameworks/flutter/SKILL.md +1 -1
- package/.agent/skills/frameworks/nextjs/META.yaml +1 -1
- package/.agent/skills/frameworks/nextjs/SKILL.md +1 -1
- package/.agent/skills/frameworks/nuxt/META.yaml +1 -1
- package/.agent/skills/frameworks/nuxt/SKILL.md +1 -1
- package/.agent/skills/frameworks/react/META.yaml +1 -1
- package/.agent/skills/frameworks/react/SKILL.md +24 -1
- package/.agent/skills/frameworks/react-native/META.yaml +1 -1
- package/.agent/skills/frameworks/react-native/SKILL.md +1 -1
- package/.agent/skills/frameworks/svelte/META.yaml +1 -1
- package/.agent/skills/frameworks/svelte/SKILL.md +1 -1
- package/.agent/skills/frameworks/vue/META.yaml +1 -1
- package/.agent/skills/frameworks/vue/SKILL.md +1 -1
- package/.agent/skills/index.json +2 -2
- package/.agent/skills/languages/asm/META.yaml +1 -1
- package/.agent/skills/languages/asm/SKILL.md +27 -436
- package/.agent/skills/languages/asm/references/advanced-architectures.md +191 -0
- package/.agent/skills/languages/asm/references/build-structure.md +150 -0
- package/.agent/skills/languages/asm/references/simd-programming.md +92 -0
- package/.agent/skills/languages/c/META.yaml +1 -1
- package/.agent/skills/languages/c/SKILL.md +14 -356
- package/.agent/skills/languages/c/references/data-structures.md +63 -0
- package/.agent/skills/languages/c/references/memory-management.md +74 -0
- package/.agent/skills/languages/c/references/platform-headers.md +230 -0
- package/.agent/skills/languages/clojure/META.yaml +1 -1
- package/.agent/skills/languages/clojure/SKILL.md +1 -1
- package/.agent/skills/languages/cpp/META.yaml +1 -1
- package/.agent/skills/languages/cpp/SKILL.md +22 -753
- package/.agent/skills/languages/cpp/references/headers-optimization.md +229 -0
- package/.agent/skills/languages/cpp/references/memory-concurrency.md +85 -0
- package/.agent/skills/languages/cpp/references/modern-cpp-features.md +126 -0
- package/.agent/skills/languages/cpp/references/platform-headers.md +202 -0
- package/.agent/skills/languages/cpp/references/stl-containers.md +57 -0
- package/.agent/skills/languages/crystal/META.yaml +1 -1
- package/.agent/skills/languages/crystal/SKILL.md +1 -1
- package/.agent/skills/languages/csharp/META.yaml +1 -1
- package/.agent/skills/languages/csharp/SKILL.md +1 -1
- package/.agent/skills/languages/elixir/META.yaml +1 -1
- package/.agent/skills/languages/elixir/SKILL.md +1 -1
- package/.agent/skills/languages/fsharp/META.yaml +1 -1
- package/.agent/skills/languages/fsharp/SKILL.md +1 -1
- package/.agent/skills/languages/go/META.yaml +1 -1
- package/.agent/skills/languages/go/SKILL.md +1 -1
- package/.agent/skills/languages/haskell/META.yaml +1 -1
- package/.agent/skills/languages/haskell/SKILL.md +1 -1
- package/.agent/skills/languages/java/META.yaml +1 -1
- package/.agent/skills/languages/java/SKILL.md +1 -1
- package/.agent/skills/languages/javascript/META.yaml +1 -1
- package/.agent/skills/languages/javascript/SKILL.md +1 -1
- package/.agent/skills/languages/julia/META.yaml +1 -1
- package/.agent/skills/languages/julia/SKILL.md +1 -1
- package/.agent/skills/languages/kotlin/META.yaml +1 -1
- package/.agent/skills/languages/kotlin/SKILL.md +1 -1
- package/.agent/skills/languages/lua/META.yaml +1 -1
- package/.agent/skills/languages/lua/SKILL.md +3 -3
- package/.agent/skills/languages/nim/META.yaml +1 -1
- package/.agent/skills/languages/nim/SKILL.md +1 -1
- package/.agent/skills/languages/ocaml/META.yaml +1 -1
- package/.agent/skills/languages/ocaml/SKILL.md +1 -1
- package/.agent/skills/languages/perl/META.yaml +1 -1
- package/.agent/skills/languages/perl/SKILL.md +1 -1
- package/.agent/skills/languages/php/META.yaml +1 -1
- package/.agent/skills/languages/php/SKILL.md +1 -1
- package/.agent/skills/languages/python/META.yaml +1 -1
- package/.agent/skills/languages/python/SKILL.md +1 -1
- package/.agent/skills/languages/r/META.yaml +1 -1
- package/.agent/skills/languages/r/SKILL.md +1 -1
- package/.agent/skills/languages/ruby/META.yaml +1 -1
- package/.agent/skills/languages/ruby/SKILL.md +1 -1
- package/.agent/skills/languages/rust/META.yaml +1 -1
- package/.agent/skills/languages/rust/SKILL.md +1 -1
- package/.agent/skills/languages/scala/META.yaml +1 -1
- package/.agent/skills/languages/scala/SKILL.md +1 -1
- package/.agent/skills/languages/solidity/META.yaml +1 -1
- package/.agent/skills/languages/solidity/SKILL.md +1 -1
- package/.agent/skills/languages/swift/META.yaml +1 -1
- package/.agent/skills/languages/swift/SKILL.md +1 -1
- package/.agent/skills/languages/typescript/META.yaml +19 -1
- package/.agent/skills/languages/typescript/SKILL.md +23 -1
- package/.agent/skills/languages/zig/META.yaml +1 -1
- package/.agent/skills/languages/zig/SKILL.md +1 -1
- package/.agent/templates/README.md +2 -2
- package/.agent/templates/chains/feature/step1-requirements.md +76 -0
- package/.agent/templates/chains/feature/step2-design.md +75 -0
- package/.agent/templates/chains/feature/step3-planning.md +81 -0
- package/.agent/templates/chains/feature/step4-implementation.md +74 -0
- package/.agent/templates/chains/feature/step5-testing.md +81 -0
- package/.agent/templates/debug-report.md +1 -1
- package/.agent/templates/deploy-plan.md +1 -1
- package/.agent/templates/doc-template.md +1 -1
- package/.agent/templates/feature-lifecycle.md +53 -0
- package/.agent/templates/index.yaml +53 -2
- package/.agent/templates/migrate-plan.md +1 -1
- package/.agent/templates/phase-template.md +1 -1
- package/.agent/templates/tasks/audit.yaml +1 -1
- package/.agent/templates/tasks/bug_fix.yaml +1 -1
- package/.agent/templates/tasks/code_implementation.yaml +1 -1
- package/.agent/templates/tasks/feature_development.yaml +89 -0
- package/.agent/templates/tasks/refactor.yaml +1 -1
- package/.agent/templates/test-report.md +1 -1
- package/.agent/workflows/doctor.md +124 -0
- package/.agent/workflows/feature.md +130 -0
- package/.agent/workflows/help.md +7 -5
- package/dist/commands/install.js +1 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/constants/ide-install-specs.js +30 -30
- package/dist/constants/ide-install-specs.js.map +1 -1
- package/dist/constants/ides.d.ts.map +1 -1
- package/dist/constants/ides.js +7 -5
- package/dist/constants/ides.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/types/ide-install.d.ts +1 -1
- package/dist/types/ide-install.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
## ⚠️ Platform-Specific Headers (CRITICAL)
|
|
2
|
+
|
|
3
|
+
### Windows Headers Conflicts
|
|
4
|
+
|
|
5
|
+
> **CRITICAL**: Windows headers have many conflicts. Follow this order exactly!
|
|
6
|
+
|
|
7
|
+
#### 1. Include Order (winsock2.h BEFORE windows.h)
|
|
8
|
+
|
|
9
|
+
```c
|
|
10
|
+
// ✅ CORRECT ORDER - winsock2.h MUST come before windows.h
|
|
11
|
+
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff
|
|
12
|
+
#define NOMINMAX // Prevent min/max macros (for C++ compat)
|
|
13
|
+
#define STRICT // Enable strict type checking
|
|
14
|
+
#define UNICODE // Use Unicode APIs
|
|
15
|
+
#define _UNICODE
|
|
16
|
+
|
|
17
|
+
#include <winsock2.h> // 1st - Winsock 2.0
|
|
18
|
+
#include <ws2tcpip.h> // 2nd - TCP/IP extensions
|
|
19
|
+
#include <windows.h> // 3rd - Windows API
|
|
20
|
+
|
|
21
|
+
#pragma comment(lib, "ws2_32.lib") // Link Winsock library
|
|
22
|
+
|
|
23
|
+
// ❌ WRONG - causes redefinition errors!
|
|
24
|
+
#include <windows.h> // includes winsock.h (1.1)
|
|
25
|
+
#include <winsock2.h> // conflicts with winsock.h!
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
#### 2. Essential Macros
|
|
29
|
+
|
|
30
|
+
```c
|
|
31
|
+
// Define BEFORE any Windows includes (in pch.h or first in source)
|
|
32
|
+
#ifndef WIN32_LEAN_AND_MEAN
|
|
33
|
+
#define WIN32_LEAN_AND_MEAN // Excludes: Cryptography, DDE, RPC, Shell, Winsock 1.1
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
#ifndef STRICT
|
|
37
|
+
#define STRICT // Strict type checking for HANDLE types
|
|
38
|
+
#endif
|
|
39
|
+
|
|
40
|
+
#include <windows.h>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### 3. Windows Socket Initialization
|
|
44
|
+
|
|
45
|
+
```c
|
|
46
|
+
#include <winsock2.h>
|
|
47
|
+
#include <ws2tcpip.h>
|
|
48
|
+
|
|
49
|
+
int init_winsock(void) {
|
|
50
|
+
WSADATA wsaData;
|
|
51
|
+
int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
|
|
52
|
+
if (result != 0) {
|
|
53
|
+
fprintf(stderr, "WSAStartup failed: %d\n", result);
|
|
54
|
+
return -1;
|
|
55
|
+
}
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
void cleanup_winsock(void) {
|
|
60
|
+
WSACleanup();
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Windows Headers Quick Reference
|
|
65
|
+
|
|
66
|
+
| Header | Purpose | Notes |
|
|
67
|
+
| -------------- | ------------------- | -------------------------------- |
|
|
68
|
+
| `<windows.h>` | Core Windows API | Use with WIN32_LEAN_AND_MEAN |
|
|
69
|
+
| `<winsock2.h>` | Sockets (Winsock 2) | MUST include BEFORE windows.h |
|
|
70
|
+
| `<ws2tcpip.h>` | TCP/IP, getaddrinfo | Include after winsock2.h |
|
|
71
|
+
| `<process.h>` | Process control | \_beginthreadex, \_getpid |
|
|
72
|
+
| `<io.h>` | Low-level I/O | \_open, \_read, \_write, \_close |
|
|
73
|
+
| `<direct.h>` | Directory | \_mkdir, \_rmdir, \_getcwd |
|
|
74
|
+
| `<conio.h>` | Console I/O | \_getch, \_kbhit |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Linux/POSIX Headers
|
|
79
|
+
|
|
80
|
+
#### 1. Feature Test Macros (Define FIRST)
|
|
81
|
+
|
|
82
|
+
```c
|
|
83
|
+
// Define BEFORE any system headers!
|
|
84
|
+
#define _GNU_SOURCE // GNU extensions (Linux-specific)
|
|
85
|
+
#define _POSIX_C_SOURCE 200809L // POSIX.1-2008 compliance
|
|
86
|
+
#define _REENTRANT // Thread-safe libc functions
|
|
87
|
+
#define _XOPEN_SOURCE 700 // X/Open SUSv4 + POSIX 2008
|
|
88
|
+
|
|
89
|
+
#include <stdio.h>
|
|
90
|
+
#include <stdlib.h>
|
|
91
|
+
#include <unistd.h>
|
|
92
|
+
#include <pthread.h>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### 2. Signal Handling with Threads (Critical)
|
|
96
|
+
|
|
97
|
+
```c
|
|
98
|
+
#include <pthread.h>
|
|
99
|
+
#include <signal.h>
|
|
100
|
+
#include <stdio.h>
|
|
101
|
+
|
|
102
|
+
volatile sig_atomic_t shutdown_flag = 0;
|
|
103
|
+
|
|
104
|
+
// ✅ Block signals in worker threads, handle in dedicated thread
|
|
105
|
+
int main(void) {
|
|
106
|
+
sigset_t set;
|
|
107
|
+
sigemptyset(&set);
|
|
108
|
+
sigaddset(&set, SIGINT);
|
|
109
|
+
sigaddset(&set, SIGTERM);
|
|
110
|
+
|
|
111
|
+
// Block signals in main thread (inherited by child threads)
|
|
112
|
+
pthread_sigmask(SIG_BLOCK, &set, NULL);
|
|
113
|
+
|
|
114
|
+
// Create worker threads (they inherit blocked signals)
|
|
115
|
+
pthread_t worker;
|
|
116
|
+
pthread_create(&worker, NULL, worker_func, NULL);
|
|
117
|
+
|
|
118
|
+
// Handle signals in main thread with sigwait
|
|
119
|
+
int sig;
|
|
120
|
+
while (sigwait(&set, &sig) == 0) {
|
|
121
|
+
if (sig == SIGINT || sig == SIGTERM) {
|
|
122
|
+
shutdown_flag = 1;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
pthread_join(worker, NULL);
|
|
128
|
+
return 0;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// ❌ AVOID: Signal handlers with threads (race conditions!)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### 3. Common POSIX Headers
|
|
135
|
+
|
|
136
|
+
| Header | Purpose | Key Functions |
|
|
137
|
+
| ---------------- | ---------------- | ----------------------------------- |
|
|
138
|
+
| `<unistd.h>` | POSIX API | read, write, close, fork, exec |
|
|
139
|
+
| `<pthread.h>` | Threads | pthread*create, pthread_mutex*\* |
|
|
140
|
+
| `<signal.h>` | Signals | sigaction, sigwait, pthread_sigmask |
|
|
141
|
+
| `<fcntl.h>` | File control | open, fcntl, O\_\* flags |
|
|
142
|
+
| `<sys/types.h>` | Type definitions | pid_t, size_t, ssize_t |
|
|
143
|
+
| `<sys/socket.h>` | Sockets | socket, bind, listen, accept |
|
|
144
|
+
| `<netinet/in.h>` | Internet addr | sockaddr_in, htons, ntohs |
|
|
145
|
+
| `<arpa/inet.h>` | IP conversion | inet_pton, inet_ntop |
|
|
146
|
+
| `<sys/stat.h>` | File status | stat, fstat, mkdir |
|
|
147
|
+
| `<sys/mman.h>` | Memory mapping | mmap, munmap, mprotect |
|
|
148
|
+
| `<dlfcn.h>` | Dynamic loading | dlopen, dlsym, dlclose |
|
|
149
|
+
| `<errno.h>` | Error codes | errno, ENOENT, EINVAL |
|
|
150
|
+
| `<dirent.h>` | Directory ops | opendir, readdir, closedir |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### Cross-Platform C Code
|
|
155
|
+
|
|
156
|
+
```c
|
|
157
|
+
// Platform detection
|
|
158
|
+
#if defined(_WIN32) || defined(_WIN64)
|
|
159
|
+
#define PLATFORM_WINDOWS 1
|
|
160
|
+
#elif defined(__linux__)
|
|
161
|
+
#define PLATFORM_LINUX 1
|
|
162
|
+
#elif defined(__APPLE__)
|
|
163
|
+
#define PLATFORM_MACOS 1
|
|
164
|
+
#else
|
|
165
|
+
#define PLATFORM_UNIX 1
|
|
166
|
+
#endif
|
|
167
|
+
|
|
168
|
+
// Platform-specific includes
|
|
169
|
+
#ifdef PLATFORM_WINDOWS
|
|
170
|
+
#define WIN32_LEAN_AND_MEAN
|
|
171
|
+
#include <windows.h>
|
|
172
|
+
#include <winsock2.h>
|
|
173
|
+
#include <ws2tcpip.h>
|
|
174
|
+
#pragma comment(lib, "ws2_32.lib")
|
|
175
|
+
#else
|
|
176
|
+
#include <unistd.h>
|
|
177
|
+
#include <sys/socket.h>
|
|
178
|
+
#include <netinet/in.h>
|
|
179
|
+
#include <pthread.h>
|
|
180
|
+
#include <errno.h>
|
|
181
|
+
#endif
|
|
182
|
+
|
|
183
|
+
// Cross-platform sleep
|
|
184
|
+
static inline void sleep_ms(unsigned int ms) {
|
|
185
|
+
#ifdef PLATFORM_WINDOWS
|
|
186
|
+
Sleep(ms);
|
|
187
|
+
#else
|
|
188
|
+
usleep(ms * 1000);
|
|
189
|
+
#endif
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Cross-platform thread type
|
|
193
|
+
#ifdef PLATFORM_WINDOWS
|
|
194
|
+
typedef HANDLE thread_t;
|
|
195
|
+
typedef DWORD thread_ret_t;
|
|
196
|
+
#else
|
|
197
|
+
typedef pthread_t thread_t;
|
|
198
|
+
typedef void* thread_ret_t;
|
|
199
|
+
#endif
|
|
200
|
+
|
|
201
|
+
// Cross-platform socket type
|
|
202
|
+
#ifdef PLATFORM_WINDOWS
|
|
203
|
+
typedef SOCKET socket_t;
|
|
204
|
+
#define INVALID_SOCKET_VAL INVALID_SOCKET
|
|
205
|
+
#define close_socket(s) closesocket(s)
|
|
206
|
+
#else
|
|
207
|
+
typedef int socket_t;
|
|
208
|
+
#define INVALID_SOCKET_VAL (-1)
|
|
209
|
+
#define close_socket(s) close(s)
|
|
210
|
+
#endif
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## ✅ Production Checklist
|
|
216
|
+
|
|
217
|
+
- [ ] No memory leaks (Valgrind clean)
|
|
218
|
+
- [ ] All malloc/calloc checked for NULL
|
|
219
|
+
- [ ] All resources freed on error paths
|
|
220
|
+
- [ ] No buffer overflows (use bounded ops)
|
|
221
|
+
- [ ] No use-after-free (nullify pointers)
|
|
222
|
+
- [ ] Static analyzer clean (clang-tidy, cppcheck)
|
|
223
|
+
- [ ] Const correctness applied
|
|
224
|
+
- [ ] Error handling with proper codes
|
|
225
|
+
- [ ] Security hardening flags enabled
|
|
226
|
+
- [ ] C23 or latest supported standard used
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
_DOMYH Awesome Code C Language (ISO C23) 2025-2026_
|