fix: corner cases when printing large content through term interface
[lunaix-os.git] / lunaix-os / includes / lunaix / ds / rbuffer.h
index f3777b6f6b45b0f5b00c410fe698ed89a3143b32..d45c9fdf0e405f6aea9889c987fea36e1165e5a0 100644 (file)
@@ -20,6 +20,22 @@ rbuffer_init(struct rbuffer* rb, char* buf, size_t maxsz)
 struct rbuffer*
 rbuffer_create(char* buf, size_t maxsz);
 
+int
+rbuffer_erase(struct rbuffer* rb);
+
+int
+rbuffer_put(struct rbuffer* rb, char c);
+
+int
+rbuffer_puts(struct rbuffer* rb, char* c, size_t len);
+
+int
+rbuffer_gets(struct rbuffer* rb, char* buf, size_t len);
+
+int
+rbuffer_get(struct rbuffer* rb, char* c);
+
+
 static inline void
 rbuffer_clear(struct rbuffer* rb)
 {
@@ -38,19 +54,14 @@ rbuffer_full(struct rbuffer* rb)
     return rb->len == rb->maxsz;
 }
 
-int
-rbuffer_erase(struct rbuffer* rb);
-
-int
-rbuffer_put(struct rbuffer* rb, char c);
-
-int
-rbuffer_puts(struct rbuffer* rb, char* c, size_t len);
-
-int
-rbuffer_gets(struct rbuffer* rb, char* buf, size_t len);
+static inline int 
+rbuffer_put_nof(struct rbuffer* rb, char c)
+{
+    if (rbuffer_full(rb)) {
+        return 0;
+    }
 
-int
-rbuffer_get(struct rbuffer* rb, char* c);
+    return rbuffer_put(rb, c);
+}
 
 #endif /* __LUNAIX_RBUFFER_H */