summaryrefslogtreecommitdiffstats
path: root/mbbsd/file.c
diff options
context:
space:
mode:
authorvictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-11-22 16:03:14 +0800
committervictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-11-22 16:03:14 +0800
commit466da544fda3aa6ed86480162b607e1a2ae6ec55 (patch)
treed672bba9618f0a4b51b137a34e2595a3772705d3 /mbbsd/file.c
parent4f9a777998858d0aea9ccb5daf390a54fece4923 (diff)
downloadpttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.tar
pttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.tar.gz
pttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.tar.bz2
pttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.tar.lz
pttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.tar.xz
pttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.tar.zst
pttbbs-466da544fda3aa6ed86480162b607e1a2ae6ec55.zip
fix assess bug
some comments git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2348 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/file.c')
-rw-r--r--mbbsd/file.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/mbbsd/file.c b/mbbsd/file.c
index 2c9374bf..e1422713 100644
--- a/mbbsd/file.c
+++ b/mbbsd/file.c
@@ -2,6 +2,14 @@
#include "bbs.h"
+/**
+ * file.c 是針對以"行"為單位的檔案所定義的一些 operation。
+ **/
+
+/**
+ * 傳回 file 檔的行數
+ * @param file
+ */
int file_count_line(char *file)
{
FILE *fp;
@@ -9,13 +17,22 @@ int file_count_line(char *file)
char buf[200];
if ((fp = fopen(file, "r"))) {
- while (fgets(buf, sizeof(buf), fp))
+ while (fgets(buf, sizeof(buf), fp)) {
+ if (strchr(buf, '\n') == NULL)
+ continue;
count++;
+ }
fclose(fp);
}
return count;
}
+/**
+ * 將 string append 到檔案 file 後端
+ * @param file 要被 append 的檔
+ * @param string
+ * @return 成功傳回 0,失敗傳回 -1。
+ */
int file_append_line(char *file, char *string)
{
FILE *fp;
@@ -29,7 +46,12 @@ int file_append_line(char *file, char *string)
}
#ifndef _BBS_UTIL_C_
-/* Rename() is in kaede.c but not linked to util/ */
+/**
+ * 從檔案 file 中刪除 prefix 為 string 的每一行。(小心 race)
+ * @param file
+ * @param string
+ * @param case_sensitive 字串比對是否 case sensitive
+ */
int file_delete_line(char *file, char *string, int case_sensitive)
{
FILE *fp, *nfp = NULL;
@@ -56,6 +78,9 @@ int file_delete_line(char *file, char *string, int case_sensitive)
}
#endif
+/**
+ * 傳回檔案 file 中是否有 string 這個字串。
+ */
int file_exist_record(char *file, char *string)
{
FILE *fp;
@@ -72,6 +97,13 @@ int file_exist_record(char *file, char *string)
return 0;
}
+/**
+ * 對每一筆 record 做 func 這件事。
+ * @param file
+ * @param func 處理每筆 record 的 handler,為一 function pointer。
+ * 第一個參數是檔案中的一行,第二個參數為 info。
+ * @param info 一個額外的參數。
+ */
int file_foreach_entry(char *file, int (*func)(char *, int), int info)
{
char line[80];