📄 sfresize.c
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved. */#include "sfhdr.h"/* Resize a stream. Written by Kiem-Phong Vo.*/#if __STD_Cint sfresize(Sfio_t* f, Sfoff_t size)#elseint sfresize(f, size)Sfio_t* f;Sfoff_t size;#endif{ SFMTXSTART(f, -1); if(size < 0 || f->extent < 0 || (f->mode != SF_WRITE && _sfmode(f,SF_WRITE,0) < 0) ) SFMTXRETURN(f, -1); SFLOCK(f,0); if(f->flags&SF_STRING) { SFSTRSIZE(f); if(f->extent >= size) { if((f->flags&SF_MALLOC) && (f->next - f->data) <= size) { size_t s = (((size_t)size + 1023)/1024)*1024; Void_t* d; if(s < f->size && (d = realloc(f->data, s)) ) { f->data = d; f->size = s; f->extent = s; } } memclear((char*)(f->data+size), (int)(f->extent-size)); } else { if(SFSK(f, size, SEEK_SET, f->disc) != size) SFMTXRETURN(f, -1); memclear((char*)(f->data+f->extent), (int)(size-f->extent)); } } else { if(f->next > f->data) SFSYNC(f);#if _lib_ftruncate if(ftruncate(f->file, (sfoff_t)size) < 0) SFMTXRETURN(f, -1);#else SFMTXRETURN(f, -1);#endif } f->extent = size; SFOPEN(f, 0); SFMTXRETURN(f, 0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -